直接插入排序、二分插入排序、希爾排序、冒泡排序與簡單選擇排序

來源:互聯網
上載者:User

標籤:直接插入排序   二分插入排序   希爾排序   冒泡排序   簡單選擇排序   

一、直接插入排序穩定,時間複雜度:最好O(n)、最差O(n^2)、平均O(n^2),空間複雜度O(1)

void InsertSort(int L[], int n){int i, j,key;for (i = 1; i<n; i++)if(L[i] < L[i-1])//需要將L[i]插入到有序表L[0...i-1]{key = L[i];for(j = i-1; j >= 0 && key < L[j]; j--)//後移L[j+1] = L[j];L[j+1] = key;//插入到正確位置}}

二、二分插入排序尋找插入位置時使用二分尋找,穩定,最佳情況O(n lg n),最差和平均情況O(n^2),空間複雜度O(1)。

void BInsertSort(int L[], int n){int i, j,key, low, mid, high;for (i = 1; i < n; i++){key = L[i];low = 0; high = i-1;while(low <= high)//在有序的L[low,...,high]中折半尋找有序插入的位置{mid = (low+high)/2;if(key < L[mid])high = mid - 1;elselow = mid + 1;}for (j = i-1; j>=high+1;j--)//後移//j >= lowL[j+1] = L[j];L[high+1] = key;//插入key   //L[low] = key}}

三、希爾排序不穩定,時間複雜度在理想情況下是O(nlgn),最壞情況為O(n^2)。空間複雜度O(1)

void ShellSort(int L[], int n){int gap = n,i, j, tmp;int k1=0, k2;while (gap > 1)//一趟shell排序{k1++;k2=0;gap = gap/3+1;for(i = gap; i < n; i++)if(L[i] < L[i-gap]){k2++;tmp = L[i];for(j = i-gap;j>=0 && tmp < L[j]; j -= gap)L[j+gap] = L[j];L[j+gap] = tmp;//printf("gap=%d,%d_%d: ",gap,k1, k2);Print(L, n);}}}

四、冒泡排序

穩定,時間複雜度最好O(n),最壞和平均情況為O(n^2)。空間複雜度O(1)。

void BubbleSort(int L[], int n){bool exchange;int i, j;for(i = 0; i < n; i++){exchange = false;for(j = n-1; j >i; j--)if(L[j] < L[j-1])//這裡是小的數往上一直交換{std::swap(L[j], L[j-1]);exchange = true;}if(!exchange)break;}}

五、簡單選擇排序

不穩定,時間複雜度O(n^2)。空間複雜度O(1)。
void SlectSort(int L[], int n){int i, j, index;for(i = 0; i < n-1; i++){index = i;for(j = i+1; j < n; j++)if(L[j] < L[index])index = j;if(index != i)std::swap(L[i], L[index]);}}
參考:http://blog.csdn.net/han_xiaoyang/article/details/12163251#t128

白話經典演算法系列之三 希爾排序的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.