排序 交換類排序

2021-09-25 21:19:16 字數 1218 閱讀 2549

演算法思想:陣列中第乙個元素和第二個元素比較,按照規則進行交換,再讓第二個和第三個進行比較,直到最大或最小的那個數交換到最後,一趟氣泡排序完成。以公升序為例,氣泡排序主要是讓大的下沉,小的上浮,每一趟排序確立乙個當前無序序列中最大的那個數,使之下沉。

時間複雜度分析:

最壞:整個陣列逆序,最內層迴圈的語句執行(n-1+1)(n-1)/2 = n(n-1)/2   ==>   o(n^2)

最好:陣列有序,o(n)

平均:o(n^2)

空間複雜度:o(1)

**:

void bubble_sort(int arr,int n)       //氣泡排序}}

}

演算法思想:通過多次劃分操作實現排序。以公升序為例,每一趟選擇當前所有子串行中的乙個關鍵字(通常是第乙個)為樞軸,將子串行中比樞軸小的放在樞軸前面,比樞軸大的放在樞軸後面。每一趟劃分會得到多組更短的子串行,它們為下一趟劃分的初始序列。

時間複雜度分析:

空間複雜度:o(log2n),快速排序是遞迴進行的,需要棧的輔助

**:

void quick_sort(int arr,int low,int high)     //快速排序}}

}void quick_sort(int arr,int low,int high) //快速排序

}arr[i] = temp; //將temp放在最終位置

quick_sort(arr,low,i-1); //繼續對temp左邊進行快速排序

quick_sort(arr,i+1,high); //對temp右邊進行快速排序

}}int main()

;// bubble_sort(arr,10);

quick_sort(arr,0,9);

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

}

交換類排序

交換排序 交換排序主要是根據記錄的關鍵字的大小,將記錄交換來進行排序的。交換排序的特點是 將關鍵字值較大的記錄向序列的後部移動,關鍵字較小的記錄向前移動。這裡介紹兩種交換排序方法,它們是氣泡排序和快速排序。氣泡排序 將被排序的記錄陣列r 1.n 垂直排列,每個記錄r i 看作是重量為r i key的...

排序演算法 交換類排序

今天我們討論一下交換類排序。交換排序的演算法思想 通過交換逆序的元素實現交換排序。交換排序主要有兩種 一種是氣泡排序,一種是快速排序。演算法思想 氣泡排序是一種簡單的交換類排序演算法,它是通過交換相鄰兩個資料元素,逐步將排序序列變成有序序列。基本演算法思想描述如下 假設待排序元素有n個,從第乙個元素...

排序(二)交換類排序

繼前面的氣泡排序,今天重點是快速排序 快速排序是基於分治法 先講一下分治法,分治法官方定義 首先將原問題分解成若干個子問題,這個子問題只是原問題較小規模的例項。解決這些子問題,遞迴的求解各個子問題。遞迴的邊界就是問題規模足夠小時,可以直接求解。那和快速排序有什麼關係呢?快速排序原理 找乙個樞軸 一般...