⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quicksort.cpp

📁 C++Example实用的算法:包括枚举
💻 CPP
字号:
//快速排序
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

typedef int ELEM;
typedef int KEY;

extern long count1;

void swap(ELEM& a ,ELEM& b){
	ELEM c = b; 
	b = a ;
	a = c ;
}

int partition(ELEM* array, int l, int r, KEY pivot) {
  do {               
    while ( array[++l] < pivot);
    while (r && (array[--r] > pivot)); 
    swap(array[l], array[r]);      
  } while (l < r);                   
  swap(array[l], array[r]);          
  return l;          
}

int findpivot(ELEM* array, int i, int j)  { return (i+j)/2; }

//快速排序算法
void qsort(ELEM* array, int i, int j) { 
  int pivotindex = findpivot(array, i, j);
  swap(array[pivotindex], array[j]);   
  int k = partition(array, i-1, j, array[j]);
  swap(array[k], array[j]);            
  if ((k-i) > 1) qsort(array, i, k-1);  
  if ((j-k) > 1) qsort(array, k+1, j); 
}

void sort(ELEM* array, int listsize) {
  qsort(array, 0, listsize-1);
}

int main()
{
	int n;
	cout<<"输入数组的大小 :    ";
	cin>>n;
	ELEM * array = new ELEM[n];
	srand((unsigned) time(NULL));
	for( int i = 0 ; i < n ; i++ )
		array[i] = rand();   //随机生成数
	sort( array , n);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -