整個區間被分成有序區間和無序區間;選擇無序區間的第乙個元素插入到有序區間合適的位置
public static void insertsort(int array)
array[j+1] = v;
}}
希爾排序法的基本思想是:先選定乙個整數,把待排序檔案中所有記錄分成個組,所有距離為此整數的記錄分在同一組內,並對每一組內的記錄進行排序。然後,取,重複上述分組和排序的工作。當到達1時,所有記錄在統一組內排好序。
希爾排序是對直接插入排序的優化。當gap > 1時都是預排序,目的是讓陣列更接近於有序。當gap == 1時,陣列已經接近有序的了,這樣就會很快。這樣整體而言,可以達到優化的效果。
public static void shellsort(itn array)
insertsortgap(array,1);
}private static void insertsortgap(int array,int gap)
array[j + gap] = v;
}}
穩定性:不穩定
每一次從無序區間選出最大(或最小)的乙個元素,存放在無序區間的最後(或最前),直到全部待排序的資料元素排完 。
public static void selectsort(int array)
int t = array[max];
array[max] = array[array.length -i - 1];
array[array.length -i - 1] = t;
}}
基本原理也是選擇排序,只是不在使用遍歷的方式查詢無序區間的最大的數,而是通過堆來選擇無序區間的最大的
數。注意:排公升序要建大堆;降序建小堆
public static void heapsort(int array)
}
基於比較的排序
1 插入排序 折半插排 減治演算法排序 每次從無序區間選擇第乙個數,插入到有序區間的合適位置 2 3 4 5 9 1768 1 2 3 4 5 9 768 1 2 3 4 5 7 9 68 一共需要多少次插入 size 1 想清楚有序區間 無序區間 插入過程 每次把無序區間的第乙個數進行插入 在有序...
Python基於比較的排序
1.平均時間複雜度均為o n2 的排序 1.1 插入排序 插入排序對少量元素的排序非常有效。工作機制就像打牌一樣,為了將牌插入到已排好序的牌中,需要將牌與手中的牌從右向左進行比較。1.2 氣泡排序氣泡排序通過重複的交換相鄰的兩個反序元素來將最大元素置於陣列末尾。1.3 選擇排序首先找出序列中的最大元...
演算法 排序 非基於比較的排序
非基於比較的排序與樣本的資料狀況有很大的關係,由於這個限制使其在工程中並不常用。非基於比較的排序有桶排序,基數排序,計數排序。這三者都能做到排序的穩定性,時間複雜度為 o n 空間複雜度為 o n 假設存在一組資料,裡面的資料只有 0 60 使用非基於比較的排序。思路 此時可以使用計數排序,準備 6...