演算法快速回顧 排序演算法

2022-04-13 15:21:42 字數 2215 閱讀 2897

常用排序演算法有以下幾種:氣泡排序、插入排序、快速排序、歸併排序、堆排序。

本文將對五種常用演算法分析並實現。

//

交換兩個元素的值 這裡列出幾種不同寫法

void swap(int *a, int *b)

void swap(int *a,int *b)

void swap(int *a,int *b)

//氣泡排序

/*原理:比較相鄰的兩個元素,將小的往前調,大的元素向後調。對於相等的元素可以保持原來的次序,該演算法是穩定的排序演算法。由於演算法將大的元素逐漸移動到後面,因而稱為氣泡排序

*/void bubble_sort(int array, int

size)

//插入排序

/*原理:構建有序數列,對於未排序的元素插入到有序數列中,最終所有元素排序完成。

具體演算法描述如下:

1、從第乙個元素開始,該元素可以認為已經被排序

2、取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

3、如果該元素(已排序)大於新元素,將該元素移到下一位置

4、重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

5、將新元素插入到該位置後

6、重複步驟2~5

*/void insertion_sort(int array, int first, int

last)

array[j+1] =tmp;

}}

//

快速排序演算法

/*原理,通過一趟掃瞄將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列

*/void swap(int *a, int *b)

int partition(int array, int low, int

high)

//將這個比樞紐元素小的元素交換到前半部分

array[low] =array[high];

//從前往後在前半部分中尋找第乙個大於樞紐元素的元素

while (low < high && array[low] <=pivot)

//將這個比樞紐元素大的元素交換到後半部分

array[high] =array[low];

}array[high]=pivot;

//返回樞紐元素所在的位置

return

low;}//

快速排序

void quicksort(int array, int low, int

high)}//

歸併排序

void merge(int unsorted, int first, int mid, int last, int

sorted)

void merge_sort(int unsorted, int first, int last, int

sorted)--"

, first, mid, last);

merge_sort(unsorted, first, mid, sorted);

merge_sort(unsorted, mid, last, sorted);

merge(unsorted, first, mid, last, sorted);

}}

堆排序:摘自 

1

//插入i節點

2void minheapfixup(int a, int

i) 3

15 a[i] =tmp;16}

17//

調整節點

18//

從i節點開始調整,n為節點總數 從0開始計算 i節點的子節點為 2*i+1, 2*i+2

19void minheapfixdown(int a, int i, int

n)

20

37 a[i] =temp; 38}

39//

刪除節點

4041

//在最小堆中刪除數

42void minheapdeletenumber(int a, int

n)

43

47void minheapsorttodescendarray(int a, int

n)

48

54 }

HTML快速回顧

是用來描述網頁的語言 hyper text markup language 是標記語言不是程式語言,用一套標記標籤來描述網頁。開始標籤 html元素 結束標籤 htm html 到 h1是主標題 最重要的 瀏覽器會自動在段落前後新增空行,是塊級元素 鏈結可以是字 句子 影象。href規定鏈結的目標,...

java web 聽器快速入門 快速回顧

採用的是觀察者模式 觀察物件的變化。分類 監聽 三大域 生命週期監聽 servletcontextlistener,它有兩個方法,乙個在出生時呼叫,乙個在死亡時呼叫 void contextinitialized servletcontextevent sce 建立servletcontext時 v...

快速回顧 MySQL 簡單查詢操作

前提要述 參考書籍 mysql必知必會 為了查詢出資料庫表中的行 資料 使用selece語句。格式 第一種 select from 第二種 select field1,field2,from 例如 select stu name from student select stu name,stu fr...