原理:對於給定的的一組記錄,經過第一輪比較好得到最小的記錄,然後將該記錄的第乙個記錄的位置進行交換,接著對不包括第乙個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二記錄進行位置交換,重複該過程,直到只有乙個記錄為止
以陣列[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 選擇排序 嚴蔚敏版...