1、冒泡
void bubblesort(int a, int n)
} }}/*1.設定一標誌性變數pos,用於記錄每趟排序中最後一次進行交換的位置。由於pos位置之後的記錄均已交換到位,故在進行下一趟排序時只要掃瞄到pos位置即可。
改進後演算法如下:
*/void bubble_1 ( int r, int n)
i= pos; //為下一趟排序作準備
} }/*2.傳統氣泡排序中每一趟排序操作只能找到乙個最大值或最小值,我們考慮利用在每趟排序中進行正向和反向兩遍冒泡的方法一次可以得到兩個最終值(最大者和最小者) , 從而使排序趟數幾乎減少了一半。
改進後的演算法實現為:
*/void bubble_2 ( int r, int n)
--high; //修改high值, 前移一位
for ( j=high; j>low; --j) //反向冒泡,找到最小者
if (r[j]
2、快速排序
#include #include using namespace std;
int getkeyindex(int array, int left, int right)
else }
int partion(int array, int left, int right)
int key = array[right];
while( begin < end ) }
if(begin != right && array[begin] > array [right])
return right;}
void quicksort(int array, int left, int right)}
/* int partion2(int array, int left, int right)
int key = array[right];
while( begin < end )
return begin;}
void quicksort(int array, int left, int right)
}int partion3(int array, int left, int right)
while( begin < end && array[begin] <= key)
begin++;
if(begin < end)
}array[begin] = key;
return begin;
}void quicksort(int array, int left, int right)
}int partion4(int array, int left, int right)
std::swap(array[++prev], array[right]);
return prev;
}void quicksort(int array, int left, int right)
}void quicksort_nor(int *array, int size) }}
*/
資料結構 排序演算法之交換排序(氣泡排序快速排序)
排序演算法 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減排列起來的操作。交換排序 所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特點是 將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動。氣泡排序演算法 演算法思想 演...
資料結構 排序之交換排序
本節將兩種交換排序氣泡排序和快速排序 氣泡排序是最簡單的交換排序方法,比較相鄰兩個記錄的關鍵字,將大的放到右邊,小的放到左邊,如圖所示 從而使關鍵字小的左移 大的右移 每一次迴圈最右邊的必定是關鍵字最大的元素,外面再加一層迴圈即可得到有序序列。實現 include using namespace s...
資料結構演算法 排序演算法之交換排序 快速排序
快速排序 1 設定兩個 變數i j,排序開始的時候 i 0,j n 1 2 以第乙個 陣列元素作為關鍵資料,賦值給key,即key a 0 3 從j開始向前搜尋,即由後開始向前搜尋 j 找到第乙個小於key的值a j 將a j 和a i 互換 4 從i開始向後搜尋,即由前開始向後搜尋 i 找到第乙個...