1. 程式人生 > >2017.10.30 學習筆記

2017.10.30 學習筆記

主要學習排序

Quicksort 快排,採用邊搜尋邊排序的方法,首先設定i=0,j=陣列大小-1

隨後利用遞迴的方法來繼續流程

程式碼:來自百度百科

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)
        {
            --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);
}

猜測應該是由於 first的位置不固定,導致遞迴的次數不固定,導致時間複雜度不固定


除此以外學習了 Stable_sort 從後到前字母進行Stable_sort便可以完成字典序的排序,而Sort具有隨機性有可能會使得原有的順序發生變化,所以字典序不推薦使用sort進行排序。


昨天體測,現在全身散架,這一年身體素質差了不少,胖了十斤.