排序 7種排序

2021-10-05 04:35:31 字數 4749 閱讀 7799

原理:對於給定的的一組記錄,經過第一輪比較好得到最小的記錄,然後將該記錄的第乙個記錄的位置進行交換,接著對不包括第乙個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二記錄進行位置交換,重複該過程,直到只有乙個記錄為止

以陣列[3 8 1 6 4]為例

第一輪排序後: 1 [3 8 6 4]

第二輪排序後: 1 3 [8 6 4]

第三輪排序後: 1 3 4 [8 6]

第四輪排序後: 1 3 4 6 [8]

最後排序結果: 1 3 4 6 8

上**

public

class

selectsort}if

(i != index)}}

public

static

void

main

(string[

] args)

;selectsort

(array)

;for

(int i =

0; i < array.length; i++)}

}

控制面板列印

133

3445

78921

30

原理:對於給定的一組記錄,初始時假設第乙個記錄自成乙個有序序列,其餘記錄為無序序列。接著從第二個記錄開始,按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直至最後乙個記錄插入到有序序列中為止。

仍以陣列[3 8 1 6 4]為例

還沒開始插入: [3] 8 1 6 4

第一輪插入8後: [3 8] 1 6 4

第二輪插入1後: [1 3 8] 6 4

第三輪插入6後: [1 3 6 8] 4

第四輪插入4後: [1 3 4 6 8]

最後排序結果: 1 3 4 6 8

上**

public

class

insertsort

if(j != i)}}

public

static

void

main

(string[

] args)

;insertsort

(array)

;for

(int i =

0; i < array.length; i++)}

}

控制面板列印

133

3445

78921

30

原理:待更新

上**

public

class

bubblesort}}

}public

static

void

main

(string[

] args)

;bubblesort

(array)

;for

(int i =

0; i < array.length; i++)}

}

控制面板列印

133

3445

78921

30

原理:待更新

上**

public

class

mergesort

}public

static

void

merge

(int

array,

int start,

int mid,

int end)

for(

int i =

0, index = mid +

1; i < array2.length; i++

, index++

)int index = start;

int j1 =0;

int j2 =0;

for(

; index <= end && j1 < array1.length && j2 < array2.length; index++

)else}if

(j1 < array1.length)}if

(j2 < array2.length)}}

public

static

void

main

(string[

] args)

;mergesort

(array,

0, array.length -1)

;for

(int i =

0; i < array.length; i++)}

}

控制台列印

133

3445

78921

30

待更新

原理:待更新

public

class

quicksort

int target = array[start]

;int i = start;

int j = end;

while

(i < j)

if(i < j)

while

(i < j && array[i]

<= target)

if(i < j)

array[i]

= target;

sort

(array, start, i -1)

;sort

(array, i +

1, end);}

}public

static

void

quciksort

(int

array)

public

static

void

main

(string[

] args)

;quciksort

(array)

;for

(int i =

0; i < array.length; i++)}

}

控制台列印

133

3445

78921

30

待更新

原理:待更新

上**

public

class

shellsort

array[j + h]

= temp;}}

}public

static

void

main

(string[

] args)

;shellsort

(array)

;for

(int i =

0; i < array.length; i++)}

}

控制台列印

133

3445

78921

30

上**

public

class

heapsort

if(array[maxindex]

> array[j])}

int p = array[0]

; array[0]

= array[i]

; array[i]

= p;}}

public

static

void

main

(string[

] args)

;minheapsort

(array)

;for

(int i =

0; i < array.length; i++)}

}

控制面板列印

133

3445

78916

2122

30

但是,上面**雖然能夠得到正確的資料,卻與氣泡排序沒有本質的區別,真正的堆排序其實分二步,先將資料構建成大頂堆,然後再調換一次位置+調整新頂堆,新頂堆的調整與第一次構建大頂堆有本質的區別,只調整位置變動了的樹分支。

上**:

public

class

heapsort

for(

int i = array.length -

1; i >=

0; i--)}

public

static

void

adjustminheapsort

(int

array,

int index,

int end)

if(array[left]

> array[index]

) index = left;}}

public

static

void

main

(string[

] args)

;minheapsort

(array)

;for

(int i =

0; i < array.length; i++)}

}

7種qsort排序方法

本文中排序都是採用的從小到大排序 一 對int型別陣列排序 int num 100 sample int cmp const void a const void b qsort num,100,sizeof num 0 cmp 二 對char型別陣列排序 同int型別 char word 100 s...

php實現7種常見排序

class test public function createdata sectime microtime this gettimelimit firtime,sectime return data 歸併排序開始 public function mergesort data public fun...

常見的7種排序演算法

1 氣泡排序 最簡單的一種排序演算法。先從陣列中找到最大值 或最小值 並放到陣列最左端 或最右端 然後在剩下的數字中找到次大值 或次小值 以此類推,直到陣列有序排列。演算法的時間複雜度為o n 2 氣泡排序 void bubblesort int arr,int length 2 選擇排序 嚴蔚敏版...