演算法 排序演算法

2021-10-01 06:53:35 字數 1612 閱讀 7761

內部排序

插入排序

思想:將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 ...