排序演算法 Java 實現

2021-08-16 03:46:36 字數 2177 閱讀 5013

1. 氣泡排序高階之路

/**

* 最簡單的交換排序:每個數與之後的所有數比較

* @param arr

*/public void ******sort(int arr)

}} }

/*** 正宗的氣泡排序:每次從最後開始找出最小的數放在最前面,最小的數像氣泡一樣慢慢浮出水面

* @param arr

*/public void bubblesort(int arr)

}} }

/*** 高階的氣泡排序:增加狀態flag判斷,若已經交換過則不再進行排序,這樣已經排好序的序列就沒必要做剩下幾次的遍歷

* @param arr

*/public void bubblesortadvanced(int arr)

}} }

public void swap(int arr, int i, int j)

2.簡單選擇排序

/**

* 簡單選擇排序演算法:每次尋找除第i個數字之外其餘數字中最小的數之後,將最小的數與第i個數交換

* @param arr

*/public void sort(int arr)

}if(min != i)

} }public void swap(int arr, int i, int j)

3.直接插入排序

/**

* 直接插入排序演算法:arr[0]作為哨兵,從第二位開始,找到相鄰兩數中的小的拎出來給arr[0],再把比它大的依次後移,

* 最後將arr[0]的值賦給空出來的,這樣小數就排在了前面

* @param arr

*/public void sort(int arr)

arr[j+1] = arr[0];

system.out.println(arrays.tostring(arr));

}} }

3.快速排序

/**

* 快速排序:整個陣列進行遞迴呼叫。

* 假設第乙個數作為基準,每次遞迴都將小於基準數的放到其左邊,大於的放到右邊;之後左邊和右邊的數列再進行這樣的遞迴呼叫,直到真個數列有序。

* @param arr

*/public void quicksort(int arr)

/*** 遞迴方法

* @param arr

* @param low

* @param high

*/public void sort(int arr, int low, int high) }

/*** 獲取切分點的索引,並將小於基準值的數都放到左側,大於基準值的數都放到右側。

* @param arr

* @param low

* @param high

* @return

*/public int partition(int arr, int low, int high)

swap(arr, low, high);

while(low < high && pivot >= arr[low])

swap(arr, low, high);

} return low; }

public void swap(int arr, int i, int j)

對於數列: 

執行如下:

此時,基準值50左側的數均比它小,右側的均比它大,則完成第一次遞迴呼叫,接下來再進行左右兩側分別遞迴,直至整個數列有序。

排序演算法java實現

以下文章 亦風亦塵的空間http blog.csdn.net lschou520 archive 2008 10 29 3176422.aspx 插入排序 package org.rut.util.algorithm.support import org.rut.util.algorithm.sor...

java實現排序演算法

四種排序方式 1.氣泡排序 2.插入排序 3.快速排序 4.歸併排序 author zhaijian public class sorts bubblesort a insertsort a quicksort a mergesort a print a 氣泡排序 兩個迴圈,第乙個迴圈是指要排序的總...

排序演算法java實現

選擇排序類 交換排序類 歸併排序類 附工具類 直接插入排序public class insertionsorter a j tmp arrayutils.printarray a public static super anytype void sort anytype a,int left,int...