先來看看8種排序之間的關係:
一、直接插入排序
**如下
1二、希爾排序public
void inerrtsort(int
a) 10 a[j+1] =tem;11}
12 }
//看起來簡單 實則有太多細節
public第void shellsort(int
list)
list[j + gap] =temp;
}//縮小增量
gap = gap / 2;}}
三、簡單選擇排序
public void selectsort(int a)第if(min != i)}}
四、堆排序
第五、氣泡排序
public第void bubblesort(int
a) }}}
六、快排
public第static
void quicksort(int list, int left, int
right)
}/*** 分割陣列,找到分割點
*/public
static
int partition(int list, int left, int
right)
//交換
swap(list, left, right);
while (left < right && list[left] <=first)
//交換
swap(list, left, right);
}//返回分割點所在的位置
return
left;
}/*** 交換陣列中兩個位置的元素
*/public
static
void swap(int list, int left, int
right)
}
七、歸併排序
第八、基數排序
參考:
八大內部排序
排序,就是重新排列表中的元素,使得表中元素滿足按關鍵字有序的過程。排序有許多種,常用的八大內部排序為氣泡排序 插入排序 選擇排序 希爾排序 快速排序 歸併排序 基數排序 堆排序 這幾種排序沒有絕對的優劣,每種排序都有他們適用範圍 氣泡排序每一趟排序可以確定乙個元素的最終位置,若一次掃瞄並沒有元素進行...
八大內部排序演算法
八大內部排序包括 l插入排序 直接插入排序 希爾排序 又稱增量排序 l選擇排序 簡單選擇排序 堆排序l交換排序 氣泡排序 快速排序 l歸併排序 l基數排序 又稱桶排序 排序演算法解析 1 直接插入排序與希爾排序 直接排序與希爾排序同屬於插入排序,不一樣的是,直接排序每次將tmp元素與前面所有的元素進...
八大內部排序 歸併排序
歸併排序 merge sort 將兩個或兩個以上的有序列表組合成乙個新的有序表,合併的m,n長度的兩個表的複雜度為o m n n個數的序列進行歸併共有ceil logn 次,每一次合併都是n常數級別的,所以總的複雜度為o nlogn 同時歸併排序是一種穩定的排序。如下,採用的是利用遞迴的方式書寫,要...