排序演算法:
1、冒泡:對資料的有序性 敏感,一旦排序完成就會 立刻停止,如果待排序的資料是基本有序的,他的排序效率是非常高的。 也是實現最簡單的排序,**不易出錯,安全性高。
2、插入:在已經有序的資料中,新增新的資料,對這個組資料再進行排序比較適合插入排序。
3、選擇:是氣泡排序的變種,不是正統的排序方法,但**簡單,容易構思
4、快速:在所有排序中平均速度最快的一種
5、歸併:把待排序的資料拆分成不可再拆分的資料對,再1:1 合併在一起,形成2:2,再把2:2合併在一起,形成4:4,直到陣列排序完成。
6、堆:把待排序的資料看成乙個完全二叉樹。
**如下:
#include
#include
void show_arr(
int arr[
],size_t len);
}// 氣泡排序
void bubble_sort(
int arr[
],size_t len)}
if(flag)
return;}
}// 插入排序
void insert_sort(
int arr,
int end,
int count)
arr[j]
= val;}}
// 選擇排序
void select_sort(
int arr[
],size_t len)if
(min
!= i)
swap(arr[
min]
,arr[i]);
}}//快速排序法
void _quick_sort(
int arr[
],size_t left,size_t right)
// 大右邊找到比標桿小的值
for(;p& arr[r]
>val; r--)
;// 如果迴圈不是以pif
(p}// 還原標桿值
arr[p]
= val;
// 排序標桿左邊資料
if(p-left >
1) _quick_sort(arr,left,p)
;// 排序標桿右邊的資料
if(right-p >
2) _quick_sort(arr,p+
1,right);}
void quick_sort(
int arr[
],size_t len
)int main();
for(
int i =
0;i<
10; i++)
show_arr(arr,
len)
; bubble();
}
資料結構與演算法 排序演算法總結
前言 這是我考研時根據率輝老師的 高分筆記 總結的。名稱 空間複雜度 最好情況下時間複雜度 最差情況下時間複雜度 穩定性直接插入排序 o 1 已經有序,雙層迴圈變為單層,o n o n2 穩定希爾排序 o 1 無o n2 不穩定氣泡排序 o n 已經有序,o n o n2 穩定快速排序 o log2...
資料結構與演算法 排序總結
這裡討論常用的內部排序 1.直接插入排序 時間複雜度o n 2 void insertsort int a,int size a j x 2.希爾排序 最小增量排序 時間複雜度 void shellsort int a,int size a j x 3.氣泡排序,時間複雜度 o n 2 void b...
資料結構與演算法 排序演算法
帶問題思考以下幾點 1 每個演算法的思想是什麼?2 每個演算法的穩定性怎樣?時間複雜度是多少?3 在什麼情況下,演算法出現最好情況 or 最壞情況?4 每種演算法的具體實現又是怎樣的?n每次選擇乙個元素k插入到之前已排好序的部分a 1 i 中,插入過程中k依次由後向前與a 1 i 中的元素進行比較。...