我的筆記之交換排序

2021-09-24 07:47:46 字數 1249 閱讀 2497

演算法思想

效率及穩定性

適用場景:

示例**:

private

static

void

sort

(int a)

}if (tag)

}}複製**

演算法思想

效率及穩定性:

適用場景:

遞迴出口,條件為(low>high)

給指標i、j和基準值key賦值

完成一趟排序,迴圈條件為(i != j)

迴圈內部,

從右往左找小於等於key的值下標 j,條件為(a[j]>key)

從左往右找大於key的值下標 i,條件為(a[i]<=key&& i交換a[i]和a[j]的值

完成一趟迴圈之後,交換key和a[i]的位置

開始遞迴:

對key左邊的數進行排序

對key右邊的數進行排序

示例**:

public

static

void

quicksort

(int a)

}//核心遞迴體

private

static

void

quicksort

(int a, int low, int high)

int i = low;

int j = high;

int key = a[low]; //基準元素取第乙個元素,取其他的直接改就行,28、29行也要改

//完成一趟排序

while (i != j)

while (a[i] <= key && i < j)

//交換兩數字位置

int temp = a[i];

a[i] = a[j];

a[j] = temp;

}//調整key的位置,將key的位置與ij相遇的位置交換

int temp = a[i];

a[i] = a[low];

a[low] = temp;

//對key左邊的數進行排序

quicksort(a, low, i - 1);

//對key右邊的數進行排序

quicksort(a, i + 1, high);

}複製**

萌新筆記之交換排序

聽名字還挺可愛的,冒泡 為啥叫冒泡呢?對n個元素進行排序,進行n 1次迴圈。在對第k次迴圈中,對前n k個元素從前往後進行比較,每次比較相鄰的兩個元素,若前乙個元素大於後乙個元素,就交換,否則保持位置不變 就是實現了把前n k個中最大放到了最後 所以每次排序一定能保證當前第k大的回落到第n k個位置...

排序專題之交換排序

在交換排序這一類中,分為氣泡排序和快速排序,快速排序是建立在 氣泡排序基礎上的乙個優化,很有意義的乙個排序,在各種acm競賽 以及其他領域中經常被用到 接下來,我們先看一看氣泡排序。氣泡排序基本思想 通過無序區中相鄰記錄關鍵字間的比較和位置的交換,使關鍵字最小的記錄如氣泡一般逐漸往上 漂浮 直至 水...

排序演算法之交換排序

交換排基本思想 兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時即進行交換,知道沒有反序的元素為止。本節介紹兩種交換排序,即氣泡排序和快速排序。氣泡排序 每次只能和相鄰的位置數進行交換,效率低 include int a 100 void quicksort int left,int right...