常見的排序演算法 交換排序

2021-08-20 08:28:42 字數 1648 閱讀 9131

交換排序

利用交換元素的位置進行排序的方法稱作交換排序。

常見的交換排序的方法:氣泡排序和快速排序。

氣泡排序

基本思想

**如下

void bubblesort(int

array, int size)}}

}

總結

快速排序

基本思想

快速排序是hoare於2023年提出的一種二叉樹結構的交換排序方法,其基本思想為:任取待排序元素序列中的某元素作為基準值,按照該排序碼將待排序集合分割成兩子串行,左子串行中所有元素均小於基準值,右子串行中所有元素均大於基準值,然後最左右子串行重複該過程,直到所有元素都排列在相應位置上為止。

**實現

交換函式

void swop(int

*a, int

*b)

a. 遞迴方式

void _quicksort(int

array, int begin, int end)

void quicksort(int

array, int size)

b. 非遞迴

void quicksortnor(int array, int size)

}

partion函式的三種實現方式

int partion(int

array, int begin, int end)

//從右邊開始找,找到乙個小於基準值的值

while (left < right && array[right] >= key)

//找到後,交換

if (left < right)

}//當迴圈終止後,交換下標為left和end-1的元素

//這樣基準值的左邊都小於基準值,右邊都大於基準值

swop(&array[left], &array[end - 1]);

return left;

}

int partion_2(int

array, int begin, int end)

if (left < right)

while (left < right && array[right] >= key)

if (left < right)

}//最後只剩乙個坑,left位置的坑。

//將key填入

array[left] = key;

return left;

}

int partion_3(int

array, int begin, int end)

cur++;

}//這時cur已經走到end,如果pre不等於cur,pre指向的是小於基準值的值

//說明下標大於pre的的值都大於基準值,

//++pre交換,將基準值放在這個位置

if (++pre != end)

swop(&array[pre], &array[end - 1]);

return pre;

}

快速排序的優化 總結

常見排序演算法 交換排序

交換排序的基本思想是 兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。應用交換排序基本思想的主要排序方法有 氣泡排序和快速排序。氣泡排序 1 排序方法 將被排序的記錄陣列r 1.n 垂直排列,每個記錄r i 看作是重量為r i key的氣泡。根據輕氣泡不能在重...

常見排序演算法的實現 交換排序

交換排序 交換排序的分類 氣泡排序 快速排序 1.氣泡排序 思想 從陣列的末尾元素開始比較兩個元素的大小,然後根據大小換位置,直到將最大或最小的元素排到陣列的起始位置 實現如下 void swap int left,int right void bubblesort int arr,int size...

排序演算法 交換排序

交換排序的基本思想 兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時則進行交換,直到沒有反序的元素為止。1.氣泡排序 交換排序 演算法 氣泡排序 bubble sort 輸入 待排序元素的陣列,待排序元素個數 輸出 原理 通過無序區中相鄰元素間關鍵字的比較和位置的交換,使關鍵字最小的元素如氣泡一...