ソートc++

3160 ワード

部分転入http://www.cnblogs.com/zyb428/p/5673738.html
排序 c++_第1张图片
ソートの挿入:
void InsertSort(int arr[], int len) {
    int i, j;
    int temp;
    for (i = 1; i < len; i++) {
        temp = arr[i];
        for (j = i - 1; j >= 0 && arr[j] > temp;j--)
            arr[j + 1] = arr[j];
        arr[j + 1] = temp;
    }
}
例を挙げます.
一連の数字:6,4,5,2,3のソート手順は次のとおりです.
4,6,5,2,3//まず4を挿入する
4,5,6,2,3//5を挿入する
2,4,5,6,3//2を挿入する
2,3,4,5,6//3を挿入
泡のソート:
 
void BubbleSort(int arr[], int n)
{
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

簡単すぎて説明しない
クイックソート:
void Qsort(int a[], int low, int high)
{
    if(low >= high)
    {
        return;
    }
    int first = low;
    int last = high;
    int key = a[first];/*         */
 
    while(first < last)
    {
        while(first < last && a[last] >= key)          //      ,         key    ,    first 
        {
            --last;
        }
 
        a[first] = a[last];/*           */
 
        while(first < last && a[first] <= key)         //      ,         key    ,    last 
        {
            ++first;
        }
         
        a[last] = a[first];    
/*           */
    }                                                   //          (( key    ),key,( key    )),      
    a[first] = key;/*      */
    Qsort(a, low, first-1);
    Qsort(a, first+1, high);
}

時間どおり
ヒープのソート
#include 
//array        ,i            ,nlength      
//      :    array     
void HeapAdjust(int array[],int i,int nLength)
{
    int nChild;
    int nTemp;
    for(;2*i+1array[nChild])++nChild;
        //                          ,       
        if(array[i]=0;--i)
    HeapAdjust(array,i,length);
    //                ,                 
    for(i=length-1;i>0;--i)
    {
        //                  ,
        //                             
        array[i]=array[0]^array[i];
        array[0]=array[0]^array[i];
        array[i]=array[0]^array[i];
        //      heap   ,                       
        HeapAdjust(array,0,i);
    }
}
                                                                                                 
int main(){
int i;
int num[]={9,8,7,6,5,4,3,2,1,0};
HeapSort(num,sizeof(num)/sizeof(int));
for(i=0;i printf("%d ",num[i]);
}
printf("ok");
return 0;
}