資料結構 排序(氣泡排序公升級版)

2021-09-07 06:54:26 字數 1199 閱讀 9818

//

排序--氣泡排序法公升級版

#include#include

#include

#include

/*氣泡排序:

氣泡排序(bubble sort),是一種電腦科學領域的較簡單的排序演算法。

它重複地走訪過要排序的數列,一次比較相鄰的兩個元素,如果他們的順序錯誤就把他們交換過來。

走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

*///

冒泡法排序

void bubblesort(int * arr, int

num)

int i = 0, j = 0, exchange = 1, temp = 0

;

/*公升級版的精華所在,增加exchange變數

普通的氣泡排序需要遍歷n輪,但是有可能n-1輪時候就已經排序完成了(部分資料本來有序),但是程式仍然會執行

公升級版增加exchange變數,當判斷在一輪排序中,任何2個元素都沒有交換位置 說明該陣列已經有序

*/for (i = 0; i < num&& exchange; i++)

}}}//

列印陣列

void print(int * arr, int

num)

int i = 0

;

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

printf("\n

");}void

test();

//定義時間型別變數

time_t ts;

//生成隨機數種子

srand((unsigned int)time(&ts));

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

//列印陣列

printf("

\n原始資料----\n");

print(arr,

10);

//冒泡法排序

printf("

冒泡法排序之後的資料\n");

氣泡排序公升級版 雞尾酒排序

雞尾酒排序等於氣泡排序的輕微變形,不同的地方在於從低到高然後從高到低,而氣泡排序則僅從低到高去比較序列裡的每個元素。他可以得到比氣泡排序稍微好一點的效能,原因是氣泡排序只從乙個方向進行比對 由低到高 每次迴圈只移動乙個專案。雞尾酒排序演算法的運作如下 從左到右,將最小的放到左邊 for int i ...

成績排序 公升級版

有n個學生的資料,將學生資料按成績高低排序,如果成績相同則按姓名字元的字母序排序,如果姓名的字母序也相同則按照學生的年齡排序,並輸出n個學生排序後的資訊。測試資料有多組,每組輸入第一行有乙個整數n n 1000 接下來的n行包括n個學生的資料。每個學生的資料報括姓名 長度不超過100的字串 年齡 整...

排序 快速排序 平民版,公升級版

利用遞迴實現快排 將陣列或者子陣列劃分成左右兩個陣列 如何劃分成左右兩個陣列,是第二步會講的 呼叫自身對左邊陣列和右邊陣列進行排序。public void recquicksort int left,int right else 劃分所作的事情是,在陣列中選取乙個pivot樞紐值,然後劃分成兩個陣列...