資料結構 排序

2021-10-17 11:20:55 字數 3179 閱讀 5782

1.氣泡排序

(1)第一次比較:首先比較第一和第二個數,將小數放在前面,將大數放在後面。然後比較第2和第3個數,將小數放在前面,大數放在後面 ······ 。

(2)在上面一趟比較完成後,最後乙個數一定是陣列中最大的乙個數,所以在比較第二趟的時候,最後乙個數是不參加比較的。

······

//簡單氣泡排序舉例【公升序】

# include

void

bubble_sort

(int*,

int)

;int

main

(void);

bubble_sort

(arr,len)

;for

(i =

0;i <

6;i++

)printf

("%d "

,arr[i]);

printf

("\n");

return0;

}void

bubble_sort

(int

* arr,

int len)}}

}

2.插入排序

第一次 第二個數插入第乙個數中,使前兩個數有序

第二次 第三個數插入前兩個數中,使前三個數有序

····

//直接插入排序【公升序】

# include

void

insertion_sort

(int*,

int)

;int

main

(void);

insertion_sort

(arr,len)

;for

(i =

0;i <

6;i++

)printf

("%d "

,arr[i]);

printf

("\n");

}void

insertion_sort

(int

* arr,

int len)

arr[j+1]

= t;}}

}

3.選擇排序(降序)

第乙個數和後面每個數比,比第乙個數大,就互換。

結果就是第乙個數是最大的

接著第二個數和後面比···

//直接選擇排序【降序】

# include

void

selection_sort

(int*,

int)

;int

main

(void);

selection_sort

(arr,len)

;for

(i =

0;i <

6;i++

)printf

("%d "

,arr[i]);

printf

("\n");

return0;

}void

selection_sort

(int

* arr,

int len)

if(min != j)

}}

4.快速排序

先把左邊第乙個數的確切位置找到(左邊的數比第乙個數小,右邊的數比第乙個數大)

之後遞迴,再把左邊第乙個數的確切位置找到······

# include

//快速排序(公升序)

void

quick_sort

(int*,

int,

int)

;int

find_pos

(int*,

int,

int)

;int

main

(void);

quick_sort

(arr,low,high)

;//low表示起始位置,high表示結束位置

for(i =

0;i <

7;i++

)printf

("%d "

,arr[i]);

printf

("\n");

return0;

}void

quick_sort

(int

* arr,

int low,

int high)

}int

find_pos

(int

* arr,

int low,

int high)

arr[low]

= val;

return high;

}

5.歸併排序

先兩個,兩個排序,使兩個中的數有序

再4個,4個排,使4個中的數有序,······

3 1 4 7 9 0 5 8

1 3 4 7 0 9 5 8

1 3 4 7 0 5 8 9

0 1 3 4 5 7 8 9

# include

​void

merge_sort

(int arr,

const

int len)

;void

merge_sort_recursive

(int arr,

int reg,

int start,

int end);​

intmain

(void);

merge_sort

(arr,7)

;for

(i =

0;i <

7;i++

)printf

("%d "

,arr[i]);

printf

("\n");

return0;

}​void

merge_sort_recursive

(int arr,

int reg,

int start,

int end)

​void

merge_sort

(int arr,

const

int len)

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...

資料結構 排序

1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...