演算法思想:陣列中第乙個元素和第二個元素比較,按照規則進行交換,再讓第二個和第三個進行比較,直到最大或最小的那個數交換到最後,一趟氣泡排序完成。以公升序為例,氣泡排序主要是讓大的下沉,小的上浮,每一趟排序確立乙個當前無序序列中最大的那個數,使之下沉。**:時間複雜度分析:
最壞:整個陣列逆序,最內層迴圈的語句執行(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個,從第乙個元素...
排序(二)交換類排序
繼前面的氣泡排序,今天重點是快速排序 快速排序是基於分治法 先講一下分治法,分治法官方定義 首先將原問題分解成若干個子問題,這個子問題只是原問題較小規模的例項。解決這些子問題,遞迴的求解各個子問題。遞迴的邊界就是問題規模足夠小時,可以直接求解。那和快速排序有什麼關係呢?快速排序原理 找乙個樞軸 一般...