sort排序演算法集合

2021-06-22 23:20:29 字數 2087 閱讀 9547

public class sort ;

quicksortarray(array);

} /**

* 氣泡排序

* 效率 o(n²),適用於排序小列表

*/private static void bubblesortarray(int array)

}} println(array);

} /**

* 選擇排序

* 效率 o(n²),適用於排序小列表

*/private static void selectsortarray(int array)

}if (min_index != i)

} println(array);

} /**

* 插入排序

* 最佳效率o(n);最糟效率o(n²)與冒泡、選擇相同。

* 適用於排序小列表 若列表基本有序,則插入排序比冒泡、選擇更有效率。

*/private static void insertsortarray(int array)

array[j + 1] = temp;

} println(array);

} /**

* 希爾排序,也稱縮小增量排序 適用於排序小列表 效率估計o(nlog2^n)~o(n^1.5),取決於增量值的最初大小。

* 建議使用質數作為增量值,因為如果增量值是2的冪,則在下乙個通道中會再次比較相同的元素。

* 改進了插入排序,減少了比較的次數。是不穩定的排序,因為排序過程中元素可能會前後跳躍。

*/private static void shellsortarray(int array)

array[j + d] = temp;}}

if (d == 1)

} println(array); }

//------------------------歸併排序 start----------------------------------

/**

* 歸併排序

* 適用於排序大列表,基於分治法

* 歸併排序演算法穩定,陣列需要o(n)的額外空間,鍊錶需要o(log(n))的額外空間,時間複雜度為o(nlog(n))

* 演算法不是自適應的,不需要對資料的隨機讀取

*/private static void mergesortarray(int array)

private static void mergesortarray(int data , int left , int right)

int center = (left+right)/2;

mergesortarray(data,left , center);

mergesortarray(data, center+1, right);

merge(data,left,center,right); }

/**

* 歸併兩個有序表

*/private static void merge(int data , int left,int center,int right)

int middle = getmiddle(array, low, high);

quicksort(array, low, middle-1);

quicksort(array, middle +1, high);

} private static int getmiddle(int array,int low, int high)

array[low] = array[high];

while(low < high && array[low] <= tmp)

array[high] = array[low];

}array[low] = tmp;

return low;

} //------------------------快速排序 end----------------------------------

private static void println(int array)

system.out.println(sb.tostring());

}}

STL(排序演算法sort)

標頭檔案 include 1.對基本型別的陣列從小到大排序 sort 陣列名 n1,陣列名 n2 n1和n2都是int型別的表示式,可以包含變數 如果n1 0,則 n1可以不寫 將陣列中下標範圍為 n1,n2 的元素從小到大排序 如 int a sort a,a 7 對整個陣列從小到大排序 int ...

STL排序演算法sort

要使用stl中的演算法,需要在程式標頭檔案引入 include 1.對基本型別的陣列從小到大排序 sort 陣列名 n1,陣列名 n2 n1和n2都是int型別的表示式,可以包含變數 如果n1 0,則 n1可以不寫 將陣列中下標範圍為 n1,n2 的元素從小到大排序。下標為n2的元素不在排序區間內 ...

STL排序演算法sort

sort 陣列名 n1,陣列名 n2 注意排序區間是 n1,n2 左閉右開。預設為從小到大排序,如果想要從大到小排序,需要加引數sort 陣列名 n1,陣列名 n2,greater include includeusing namespace std int main sort a,a 5 for ...