都說資料結構是我們程式設計師的基本功之一,那麼內排序就是資料結構裡必不可少的重要部分。所以自己在學習這部分內容的同時也希望能給大家帶來更多的東西,希望你能有所收穫!
在排序過程中,整張表都是在記憶體中處理,不涉及內、外存的資料交換,稱之為內排序。
反之,排序過程中需涉及內外存交換的,稱之為外排序。
排序過程中,可能會遇到關鍵字相同的幾個元素,若排序完後它們的相對順序不變,則這種排序方法是穩定的。
反之,如果它們相對次序變動了,就是不穩定的排序方法。
直接插入排序
思路解析:將未排序區的第乙個元素插入到有序區合適的位置
時間複雜度:o(n2)
穩定性:穩定
/**
* 直接插入排序
* * 將陣列分為'有序區'與'無序區',每次將'無序區'的開頭元素放到'有序區'的指定位置中
* @author levi
* */
public class directinsertionsort ;
int length = arrayint.length;
//注意初始的i是1不是0,在陣列中是第二位
for (int tmp, j, i = 1; i < length; i++)
arrayint[j+1] = tmp;
} //輸出結果
for (int i : arrayint)
}}
希爾排序思路解析:希爾排序是一種分組的插入排序,先選取乙個增量x(一般為n/2),將彼此間隔為x的元素放在一組(所以一共x個組),每個組組內進行插入排序後,再縮小增量x(一般去x/2),再次排序,直到x為1,所有元素為一組,排序完成
時間複雜度:o(n1.3)
穩定性:不穩定
/**
* 希爾排序
* * @author levi
* */
public class shellsort ;
shellsort( arrayint);
for (int i : arrayint) }
public static void shellsort( int arrayint)
arrayint[j] = temp;
}} }
}
氣泡排序思路解析:
時間複雜度:o(n2)
穩定性:穩定
/**
* 氣泡排序
* @author levi
*/public class bubblesort ;
for(int temp,j,i = 0; i < arrayint.length; i++)
}}
for (int i : arrayint)
}}
快速排序思路解析:
時間複雜度:o(nlog2 n)
穩定性:不穩定
public class quicksort ;
int length = arrayint.length;
quicksort(arrayint, 0, length-1);//注意傳入引數應為物理值
for (int i : arrayint)
}public static void quicksort(int arrayint, int start, int end) ;
int length = arrayint.length;
for(int i=0; iarrayint[j])
}}
for (int i : arrayint)
}}
資料結構 Java實現 排序
直接插入排序 希爾排序 二分插入 簡單選擇排序 堆排序歸併排序 快速排序 氣泡排序 桶式排序 基數排序 插入排序由n 1趟排序組成,對於p 1到p n 1趟,保證位置0到p上的元素為已排序狀態。在第p趟,將位置p上的元素向左移動到正確位置。s n o n 2 public static super ...
資料結構 排序 內排序總結
1.時間複雜度總結 n2 直接插入排序,氣泡排序,簡單選擇排序 這三種裡面直接插入排序好一點 nlogn 快速排序,堆排序,歸併排序 n 基數排序 其他 n2 2.時間效能與初始序列無關 口訣 一堆烏龜選 堆排序,歸併排序,基本選擇排序,基數排序 3.空間效能 快速排序 logn 歸併排序 n 基數...
資料結構常用內排序
以下排序均使用順序表作為排序資料的儲存結構 順序表基本運算演算法 seqlist.h include define maxl 100 最大長度 typedef int keytype 定義關鍵字型別為int typedef char infotype typedef struct rectype 查...