資料結構與演算法 排序演算法總結

2021-09-12 10:15:45 字數 1419 閱讀 2816

排序演算法:

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 中的元素進行比較。...