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...