資料結構 內排序 Java實現

2021-08-21 17:46:47 字數 2081 閱讀 3011

都說資料結構是我們程式設計師的基本功之一,那麼內排序就是資料結構裡必不可少的重要部分。所以自己在學習這部分內容的同時也希望能給大家帶來更多的東西,希望你能有所收穫!

在排序過程中,整張表都是在記憶體中處理,不涉及內、外存的資料交換,稱之為內排序

反之,排序過程中需涉及內外存交換的,稱之為外排序

排序過程中,可能會遇到關鍵字相同的幾個元素,若排序完後它們的相對順序不變,則這種排序方法是穩定的。

反之,如果它們相對次序變動了,就是不穩定的排序方法。

直接插入排序

思路解析:將未排序區的第乙個元素插入到有序區合適的位置

時間複雜度: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 查...