快速排序

来源:互联网 发布:离线背单词软件 编辑:程序博客网 时间:2024/06/05 14:45

快速排序看起来很复杂的样子,其实很简单:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

#include<bits/stdc++.h>using namespace std;void quickSort(int s[], int l, int r){    if (l< r)    {        int i = l, j = r, x = s[l];        while (i < j)        {            while(i < j && s[j]>= x) // 从右向左找第一个小于x的数                j--;            if(i < j)                s[i++] = s[j];            while(i < j && s[i]< x) // 从左向右找第一个大于等于x的数                i++;            if(i < j)                s[j--] = s[i];        }        s[i] = x;        quickSort(s, l, i - 1); // 递归调用        quickSort(s, i + 1, r);    }}int main(){    int array[]={34,65,12,43,67,5,78,10,3,70},k;    int len=sizeof(array)/sizeof(int);    cout<<"The orginal arrayare:"<<endl;    for(k=0;k<len;k++)        cout<<array[k]<<",";    cout<<endl;    quickSort(array,0,len-1);    cout<<"The sorted arrayare:"<<endl;    for(k=0;k<len;k++)        cout<<array[k]<<",";    cout<<endl;    system("pause");    return 0;}
原创粉丝点击