/**
* 排序演算法
* * 插入排序 |____直接插入排序 |____折半排序 |____希爾排序
* * 交換排序 |____氣泡排序 |____快速排序
* * 選擇排序 |____簡單選擇排序 |____堆排序 |____歸併排序
* * 分配排序 |____箱排序 |____基數排序
* *
* @author kevin
* */
public class sorting else
break;}}
}/**
* 折半排序,降序
* 在乙個有序的子檔案中,用折半查詢方法查詢代插入記錄應插入的位置。
* 直接插入用的是順序查詢。
* * @param array
*/public void binary_insert_sort(int array)
for (int j = i - 1; j >= low; j--)
array[low] = temp;}}
/*** 希爾排序,降序
* 把記錄按一定的增量分組,對每組用直接插入排序排序;
* 隨著增量的減少,各分組中包含的記錄將越來越多,
* 當增量減少為1時,所有記錄序列變成一組。
* * @param array
*/public void shell_sort(int array) }}
if (t == 1)
break;
if (t % 2 == 0)
t = t >> 1;
else
t = (t >> 1) + 1;}}
/*** 氣泡排序,降序
* 從第乙個記錄開始兩兩比較,次序不對就交換它們的位置。
* * @param array
*/public void bubblle_sort(int array) }}
}/**
* 快速排序,降序
* 選擇記錄中乙個適合的關鍵字,以此關鍵字對應的記錄為基準,然後重新安排待排序列的記錄。
* 對該關鍵字前面和後面的記錄重複這個過程。
* * @param array
* @param p
* 子檔案的下界
* @param q
* 子檔案的上界
*/public void quick_sort(int array, int p, int q)
while (array[i] < temp && j > i)
i++;
if (j > i)
}array[i] = temp;
if (p < i - 1)
quick_sort(array, p, j - 1);
if (j + 1 < q)
quick_sort(array, j + 1, q);
}/**
* 簡單選擇排序,降序
* 首先找出所有記錄中最小的記錄,將它也第乙個記錄交換位置。
* 然後再找次小的記錄,再與第二個記錄交換位置,依此類推這個過程。
* * @param array
*/public void ******_selection_sort(int array)
if (k != i) }}
/*** 二路歸併排序是將兩個有序記錄合併成乙個有序記錄
* 從兩個有序記錄中最小關鍵記錄開始比較輸出較小者,然後繼續比較,直到輸出所有記錄為止。
* @param a,b
* @return int
*/public int two_way_merge_sort(int a, int b)
while (i < a.length)
c[k++] = a[i++];
while (j < b.length)
c[k++] = b[j++];
return c;}}
一些常用演算法 排序
1.冒泡法 1 比較第乙個數和第二個數,若為逆序a 0 a 1 則交換,以此類推 直到第n 1個數和第n個數比較完為止 第一次氣泡排序,結果最大的數被安置在最後乙個元素位置上。2 對前n 1個數進行第二次氣泡排序,結果使次大的數被安置在n 1的位置上。3 重複上述過程,經過n 1次氣泡排序後,排序結...
常用的一些排序演算法
整理一下各種排序演算法 1.氣泡排序 時間複雜度o n 2 時間比較長,但是比較容易理解和實現。氣泡排序 public int sortarray int nums return nums 2.快速排序 選定乙個基準值 一般是陣列的第乙個值 一次把比基準小的數字放在左邊,比基準大的數字放在右邊。然後...
常用的一些排序演算法(C 實現)
常用的排序演算法有氣泡排序,選擇排序,插入排序,歸併排序 希爾排序,堆排序等 1 冒泡 氣泡排序就是像旗袍一樣,最大的值逐漸上浮,我的實現方法是採用遞迴的,當然也可以不用遞迴 void bubblesort2 int array,int length if index length 1 bubble...