講講排序(C 描述)

2021-08-08 23:52:37 字數 2105 閱讀 8568

排序和查詢一直是演算法的主流問題。

排序方法有很多種:

1.簡單排序(o(n^2))

#include #include using namespace std;

void ******sort(int *a,int n)

} }}int main()

******sort(a,min(n,20));

for (int i = 0; i < n && i < 20; ++i)

cout << endl;

}

簡單排序是實現就上面這些。(看起來很上的那一堆,主要是用了方便檢驗)至於呼叫了min,所以才會有那個include 那個algorithm,對了,稍微懂點的,或者還沒有忘掉的哥們,應該還是很清楚這個庫裡面就包含了sort函式,這個就是用快排實現的。

2.氣泡排序 o(n^ 2)運氣好可以是o(n)

#include #include using namespace std;

void bubblesort(int *a,int n)

} }}int main()

bubblesort(a,min(n,20));

for (int i = 0; i < n && i < 20; ++i)

cout << endl;

}

也不難理解,就是將每乙個大小順序的點排到乙個排的地方去,第一次是排最大的那個。依次類推。

由於前兩個比較可以使得在a[1]放的是a[0] a[1]中比較大的那個。

再來就是就是a[2]放的是a[1] a[2]中比較大的那個。由於a[1]又是a[0] a[1]中最大的那個,也就確保了a[2]是前三個中最大的那個。依次類推,排完所有點。

3.歸併排序(mergesort)

#include #define size 100

//設定最大長度

using namespace std;

void mergesort(int *a ,int s,int e) else

} while (i <= mid)

while (j <= e)

for (int i = 0; i < tot; ++i)

}int main()

mergesort(a,0,n - 1);

for (int i = 0; i < n && i < 20; ++i)

cout << endl;

}

4.選擇排序

把最小的放最前面,或者是反過來也是可以的。

#include using namespace std;

void selectsort(int *a,int n)

if (min != i) }}

int main()

selectsort(a,n);

for (int i = 0; i < n && i < 20; ++i)

cout << endl;

}

5.快速排序

#include using namespace std;

void sort (int *a,int s,int e)

while ( i < j && a[i] <= k)

++i;

if ( i < j )

} a[i] = k;

sort(a,s,i-1);

sort(a,i+1,e);

}int main()

sort(a,0,n-1);

for (int i = 0; i < n; ++i)

cout << endl;

}

6.插入排序

//非降序 

void insertionsort(int* s, int n)

}

總體來說,我還是比較喜歡快排的。這是用遞迴實現的,如果能轉成用棧去模擬棧的話,應該會降低時間複雜度。

快速排序 C語言描述

time limit 15ms memory limit 65536kb submit statistic discuss problem description 山東理工大學有很多學生,當然也有很多美女,機械實驗班的學委 外號 大王八 很想找個女朋友,但他想找個身高和自己相配的女生做女朋友,現有理...

希爾排序 C語言描述

下面用個例子來說明一下 演算法編寫 for j 0 add j 0 j 依次增量排序 p k a temp 可以看出來,希爾排序是將陣列序列分成若干個子串行,然後再將子串行進行插入排序,等到序列基本有序時,最後進行一次全體插入排序。不穩定排序 可以從上面的那個例子看出,有兩個相同的數 48,但在最終...

常見幾種排序演算法的C 描述

注意如果採取的是三數中值分割法的時候需要,將頭,中,尾的三個值中間的轉移到陣列的頭部。這樣來進行partition void quicksort vector arr,int start,int end void bubblesort vector arr void shellsort vector...