LeetCode前置課 2 八大排序演算法

2021-10-07 21:05:37 字數 2154 閱讀 7892

1、冒泡

//,冒泡

public static void sortmaopao();

system.out.println("排序前:"+ arrays.tostring(arr));

int temp;

for(int j=0 ;jarr[i+1])}}

system.out.println("排序後:"+ arrays.tostring(arr));

}

2、選擇排序

//選擇排序

public static void selectsort();

system.out.println("排序前:"+ arrays.tostring(arr));

for(int i=0; iarr[j])

}if(minindex!=i)

}system.out.println("排序前:"+ arrays.tostring(arr));

}

3、插入排序

//插入排序

public static void insertsort();

system.out.println("排序前:"+ arrays.tostring(arr));

int insertval;

int insertindex;

for(int i=1 ; i=0保障不越界,等於-1表示找到了最前邊,

//跳出while;insertval=0 && insertval4、希爾排序

//希爾排序(一種插入排序,簡單增量排序)

public static void shellsort();

system.out.println("排序前:"+ arrays.tostring(arr));

int size = arr.length;

for(int gap =size/2 ; gap>0; gap = gap/2)

if(l>=r)

temp=arr[l];//找到了,進行冒泡交換排序

arr[l]=arr[r];

arr[r]=temp;

}if(l==r)

if(leftl)

}

6、歸併排序

//歸併排序(又叫分治排序)

public static void mergesort(int arr ,int left, int right , int temp){

if(left7、基數排序

//基數排序(對桶排序的優化)

public static void radixsort(int array){

int max = array[0];//找出最大數

for(int i=0; i0){//表示查出有數的桶

for(int l =0;l8、堆排序,堆排序依賴樹

移步檢視樹部分文章

排序總結:

八大排序(2)

氣泡排序 void sort int array if ischarge 時間複雜度 空間複雜度 穩定性適合場景 o n 2 o 1 穩定元素基本有序,數量較小 快排 遞迴從待排序區間選擇乙個數,作為基準值key partion 遍歷整個待排序區間,將比基準值小的 可以包含相等的 放到基準值的左邊,...

八大排序之快排

public class quicksort sort a,0,5 for int i 0 i a.length i public static void sort int a,int left,int right int i left int j right int key a left whil...

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...