c++快速排序

来源:互联网 发布:java中get方法 编辑:程序博客网 时间:2024/06/06 05:14

1、基于partition函数的快速排序

<span style="font-size:18px;">int partition(int *data, int start, int end){if(data == NULL || start > end){return -1;}int index = data[start];int i = start,j = end;while(i < j){while(i<j && data[j] >= index)j--;if(i<j)data[i++] = data[j];while(i<j && data[i] < index)i++;if(i<j)data[j--] = data[i];}data[i] = index;return j;}void quickSort(int *data,int start,int end){if(data == NULL)return ;if(start < end){int p = partition(data,start,end);quickSort(data,start,p-1);quickSort(data, p+1, end);}}int main (int argc, char* argv[]){int data[] = {6,2,4,3,5,1,7,6,8,9};int length = sizeof(data)/sizeof(int);quickSort(data,0,length -1);for(int i = 0; i<length;i++)cout<<data[i]<<' ';cout<<endl;system("pause");    return 0;}</span>




2、直接的快速排序

<span style="font-size:18px;">void quickSort(int *data,int start,int end){if(data == NULL || start > end){return ;}int index = data[start];int i = start,j = end;while(i < j){while(i<j && data[j] >= index)j--;if(i<j)data[i++] = data[j];while(i<j && data[i] < index)i++;if(i<j)data[j--] = data[i];}data[i] = index;quickSort(data,start,i-1);quickSort(data, i+1, end);}</span>



0 0