排序算法

来源:互联网 发布:内存中存放的是数据 编辑:程序博客网 时间:2024/05/16 00:28
快速排序:
从一组数种选取一个主元,从后向前把比主元小的换到前面,从前向后把比主元大的换到后面,然后前后两个部分重复此操作。
void Qsort
(int a[],int low,int high)
{
if(low>=high) return;
int first=low;
int last=high;
int key=a[low];/*用字表的第一个记录作为枢轴*/
while(first<last) {
while(first<last&&a[last]>=key) --last;
a[first]=a[last];/*将比第一个小的移到低端*/
while(first<last&&a[first]<=key) ++first;
a[last]=a[first];/*将比第一个大的移到高端*/
}
a[first]=key;/*枢轴记录到位*/
Qsort(a,low,first-1);
Qsort(a,first+1,high);
}
归并排序:
把一个数组等分两部分,把两部分排好序后再合并。
void MergeSort(int sourceArr[],int tempArr[],int startIndex,int endIndex)
{
    int midIndex;
    if(startIndex<endIndex)
    {
        midIndex=(startIndex+endIndex)/2;
        MergeSort(sourceArr,tempArr,startIndex,midIndex);
        MergeSort(sourceArr,tempArr,midIndex+1,endIndex);
        Merge(sourceArr,tempArr,startIndex,midIndex,endIndex);
    }
}
 
0 0
原创粉丝点击