交換排
基本思想:兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時即進行交換,知道沒有反序的元素為止。本節介紹兩種交換排序,即氣泡排序和快速排序。
氣泡排序:每次只能和相鄰的位置數進行交換,效率低
#include
int a[100];
void quicksort(int left,int right);//假設按照遞增輸出
void maopaosort(int a[100],int n);
int main()
return0;}
void maopaosort(int a[100],int n)
}if(!over)
}}
快速排序:基本思想是先選擇乙個基準數,一般為陣列的第乙個數,然後我們可以假設有兩個哨兵i和j,i在陣列最左邊,j在陣列最右邊,哨兵j往左邊一步步移動,知道比基準數小的陣列那裡停下來。哨兵j往右邊移動,知道在比基準數大的陣列那裡停下來。然後交換兩個數的位置,。當哨兵i和j相遇時,就和基準數交換。這時,基準數左邊的數都小於它,基準數右邊的數都大於它.
圖示:假設待排序的數為,按照從小到大的順序輸出
**環節:
#include
int a[100];
void quicksort(int left,int right);//假設按照遞增輸出
int main()
return0;}
void quicksort(int left,int right)
疑惑解決:基準數選左邊就應該從右邊先移動,基準數選右邊就應該從左邊先移動。為什麼?
解答:假設我們排序的數為,那麼基準數為6,哨兵i先移動,停在了7這個位置,然後哨兵j開始移動,和i在7的這個位置相遇了,然後7和6交換,變成了,這個時候有乙個問題,基準數左邊的7比6大了。問題就在與當i先移動時,會停在比基準數大的位置。
排序演算法之交換排序
交換,就是根據序列中兩個元素關鍵字的比較結果來對換這兩個記錄在序列中的位置。基於交換的排序 演算法有很多。以氣泡排序和快速排序舉例。氣泡排序 public static int bubblesort int array return newarray 穩定性 氣泡排序是乙個穩定的排序方法。氣泡排序中...
排序演算法之交換排序
交換排序的思想是,比較兩個元素的大小,然後確定是否交換位置,主要分為兩種 氣泡排序,依次比較相鄰的兩個元素,把最值放在頭部或者尾部,接下來再用同樣的方法取最值放在頭部或尾部。如下 void bubblesort int a,int n 快速排序,首先設定乙個分界值,然後通過分界值,將陣列分成兩部分,...
排序演算法之交換排序
交換排序有 氣泡排序和快速排序 演算法思想 冒泡遍歷所有的資料,每次對相鄰元素進行兩兩比較,如果順序和預定規定的順序不一致,則進行位置交換 這樣依次遍歷會將最大或最小的資料上浮到頂端,之後對於其他元素重複相同的操作,直到所有的資料有序。即 如果要公升序排序的話,就每次兩兩比較,將較大的元素交換到後面...