兩個排序演算法

2022-09-12 09:09:10 字數 1030 閱讀 6335

然後貼**:

1

int num[10];2

time_t tms;

3 srand((unsigned int)time(&tms));//

生成種子

4for (int i = 0; i < 10; i++)//

生成陣列元素為10 的陣列59

1011

//氣泡排序

12for (int i = 0; i < 10 - 1; i++)

1324

}25 }

1

int num[10];2

time_t tms;

3 srand((unsigned int)time(&tms));//

生成種子

4for (int i = 0; i < 10; i++)//

生成陣列元素為10 的陣列59

1011

//選擇排序

12for (int i = 0; i < 10; i++)

1322}23

24int tmp = num[10 - 1 -i];

25 num[10 - 1 - i] =num[max];

26 num[max] =tmp;

2728 }

上面就是氣泡排序和選擇排序的實現**了

氣泡排序呢,就是每一次都從頭開始冒泡,選出大的那個,繼續往後面冒,一輪下來,最大的就冒到最後面了,下一輪冒泡可以找到倒數第二大的數放在倒數第二的位置。。。。反覆。。。。

選擇排序呢,就是每一次都找出最大數的下標,然後將最大的數放到最後。

我個人認為,這兩種排序方法本質上都是一樣的,都是比較之後交換,冒泡交換的是數值本身,而選擇交換的是陣列的下標。

就純int型數字陣列來言的話,我覺得效率基本是一樣的,因為陣列的下標和陣列中元素的sizeof都是一樣的,是4個位元組。

當然,這些都是我瞎想的,具體到底是怎樣的,相信以後我學了資料結構和演算法之後,能夠得到正確的答案。

兩個排序演算法比較

一.起泡法排序 起泡法排序 掌握兩個重點,1 n個數排序需要進行n 1趟排序 2 第j趟排序需進行n j次比較 交換 程式如下 定義一維陣列,這裡a 0 不用,儲存a 1 a 5 共5個元素,因此n為5.include main for i 1 i 5 i printf n d a i 上述程式中,...

演算法 合併兩個排序鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。方法一 遞迴 public class listnode public class solution if list2 null 找到合併鍊錶的第乙個值,然後把其餘的加到它的後面 if list1.val l...

兩個排序演算法的擴充套件應用

利用歸併和快排的思想 分別可以快速求解逆序對和第 k 大 小 數 時間複雜度分別為 o nlogn 和 o n mergesort includeusing namespace std const int n 1e5 10 int n,a n b n ans void mergesort int l...