排序演算法!~,排序演算法

來源:互聯網
上載者:User

排序演算法!~,排序演算法

排序演算法很多,這裡主要列出幾個比較經典的排序演算法。

最開始我們最先接觸到的排序演算法是冒泡排序,冒泡排序是一種比較簡單的排序演算法,重複的掃描排序過的數組,直到沒有數字交換的情況。時間複雜度O(n^2)。

冒泡排序:

void Bullesort(int a[], int n){int i, j, temp;for(i = 0; i < n; i++){for(j = 0; j < n - 1; j++){if(a[j] > a[j + 1]){temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}

選擇排序也是比較簡單的排序演算法,簡單來講,就是找到最小的數或最大的數放在第一位,以此類推。時間複雜度O(n^2)。

選擇排序:

void SelectSort(int a[], int n){int i, j, k;for(i = 0; i < n - 1; i++){k = i;for(j = i + 1; j < n; j++)if(a[k] > a[j])k = j;if(k != i){a[k] = a[k] ^ a[i];a[i] = a[i] ^ a[k];a[k] = a[k] ^ a[i];}}}

插入排序,也是一種簡單的排序方法,簡單來說,就是將要排序的數組按大小插入到已經排序好的數組中。時間複雜度O(n^2)。

void InertSort(int a[], int n){int i, j;for(i = 2; i <= n; i++){if(a[i] < a[i - 1]){a[0] = a[i];a[i] = a[i - 1];for(j = i - 1; a[0] < a[j]; j--)a[j + 1] = a[j];a[j + 1] = a[0];}}}

快速排序,一種較為高效的排序方法,簡單來說,就是選擇一個標誌,將大於這個標誌的數放在右邊,小於的放在左邊,然後遞迴左右兩個區間,知道區間只有一個數。時間複雜度為O(n*logn)。

void quicksort(int a[], int n){int i = 0, j = n - 1, val = a[0];if(n > 1){while(i < j){for(; j > i; j--)if(a[j] < val){a[i++] = a[j];break;}for(; i < j; i++)if(a[i] > val){a[j--] = a[i];break;}}a[i] = val;quicksort(a, i);quicksort(a + i + 1, n - i - 1);}}

歸併排序,也是比較高效的排序方法,簡單來說,就是將數組遞迴分成兩個小區間,然後再來合并區間,合并過程中,將區間變成有序。時間複雜度為O(n*logn)。n比較小的時候,歸併排序比快排要快,但是n如果很大的話,快排就體現出了優勢。

void MergeSort(int a[], int first, int end){void Sort(int a[], int first, int mid, int end);int mid;if(first < end){mid = (first + end) / 2;MergeSort(a, first, mid);MergeSort(a, mid + 1, end);Sort(a, first, mid, end);}}void Sort(int a[], int first, int mid, int end)  //合并的函數{int i, j, k, temp[10];i = first; j = mid + 1; k = first;while(i <= mid && j <= end){if(a[i] > a[j]){temp[k++] = a[j++];}else{temp[k++] = a[i++];}}while(i <= mid){temp[k++] = a[i++];}while(j <= end){temp[k++] = a[j++];}for(i = first; i <= end; i++)a[i] = temp[i];}




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.