內部排序
插入排序
思想:將n個陣列看成乙個有序表和乙個無序表,開始時有序表只有乙個元素,排序過程是每次取出無序表中的第乙個元素,將它的排序碼與有序表中元素的排序碼進行比較,將其放在合適的位置
public static void insertsort(int array)
array[++insertindex]=insertval;}}
直接插入排序
希爾排序
選擇排序
思想:對於陣列arr[n],從小到大:第一次從從arr[0]到arr[n-1]選乙個最小值與arr[0]交行,第二次從arr[1]到arr[n-1]選乙個最小值與arr[1]交換,以此類推,通過n-1次得到有序序列。從大到小排序,與從小到大的方式一樣,只是每次選出最大值
public static void selectsort(int array) }}
}
優化:在每輪迴圈過程中,若有元素有交換,數列無序;若無元素交換,說明數列已然有序,直接跳出大迴圈
public static void bubblesort(int array)
}//有序標記為true時,說明陣列是有序的,跳槽迴圈
if(flag)}}
優化:新增邊界,每輪迴圈後,邊界之後的元素肯定是有序的,無須比較,所以下輪迴圈時只需要比較邊界前的數列
public static void bubblesort(int array)
}
//有序標記為true時,說明陣列是有序的,跳槽迴圈
if(flag)
//每輪迴圈後,將邊界設定為最後交換的位置
sortborder=lastexchangeindex;}}
公升級:雞尾酒排序
public static void bubblesort(int array)
}rightsortborder=lastrightexchangeindex;
if(flag)
//從右往左,小的向前移動
flag = true;
for (int j = rightsortborder;j>leftsortborder;j--),排序後
**:public static void radixsort(int array)
}int maxlenght=(max+"").length();
//二維陣列表示10個桶,每個桶都是乙個一位陣列,存放array中的元素
int bucket = new int[10][arrlength];
//桶中每次放入的資料個數
int bucketelementcounts = new int[10];
//排序
for (int i =0,n=1;i0){
//依次將桶中的元素放到原陣列中
for(int k = 0;k
外部排序
演算法 排序演算法
最近在學習 演算法導論 一書,隨手做一下筆記。輸入 for int i 1 i numbers.length i system.out.println return numbers 輸出 為了乙個給定的問題,演算法一次或多次遞迴地呼叫其自身以解決緊密相關的若干子問題。歸併排序,完全遵循分治模式。直觀...
排序演算法 排序演算法彙總
排序演算法無疑是學習資料結構中的重點內容,本文將給出排序演算法的彙總。下面是具體的實現 include include include define n 1000000 int array n int temp n 1 氣泡排序 void bubblesort int a,int n if tag ...
排序演算法 排序演算法彙總
排序演算法無疑是學習資料結構中的重點內容,本文將給出排序演算法的彙總。下面是具體的實現 include include include define n 1000000 int array n int temp n 1 氣泡排序 void bubblesort int a,int n if tag ...