十大排序演算法(Java實現)

2021-09-17 02:43:31 字數 3723 閱讀 3498

//氣泡排序

public

static

int[

]bubblesort

(int

arr)

}return arr;

}

//選擇排序

public

static

int[

]selectsort

(int

arr)

swap

(arr, i, min);}

return arr;

}

//插入排序

public

static

int[

]insertsort

(int

arr)

arr[j +1]

= temp;

}return arr;

}

//希爾排序

public

static

int[

]shellsort

(int

arr)

return arr;

}private

static

void

shell

(int

arr,

int k)

arr[j + k]

= temp;

}}

//歸併排序

public

static

int[

]mergesort

(int

arr)

private

static

int[

]combine

(int

arr1,

int[

] arr2)

return arr;

}

//快速排序

public

static

int[

]quicksort

(int

arr)

private

static

void

quickdosort

(int

arr,

int left,

int right)

private

static

intgetpartition

(int

arr,

int left,

int right)

}swap

(arr, index -

1, left)

;return index -1;

}

//堆排序

public

static

int[

]heapsort

(int

arr)

while

(length >0)

return arr;

}private

static

void

adjust

(int

arr,

int i,

int length)

}

//計數排序

public

static

int[

]countingsort

(int

arr)

int[

] result =

newint

[max - min +1]

;for

(int i : arr)

int j =0;

for(

int i =

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

return arr;

}

//桶排序

public

static

int[

]bucketsort

(int

arr)

int bucketnum = arr.length /10;

//初始化arr.length個空桶

for(

int i =

0; i < bucketnum; i++

)for

(int val : arr)

for(

int i =

0; i < bucketnum; i++

)int j =0;

for(

int i =

0; i < bucketnum; i++)}

return arr;

}

版本一:

//基數排序(使用陣列麻煩)

public

static

int[

]radixsort

(int

arr)

int times =

(max +"")

.length()

;int

nums =

newint[10

][arr.length]

;//記錄每個桶的索引

int[

] count =

newint[10

];for(

int i =

0, n =

1; i < times; i++

, n *=10)

int index =0;

for(

int k =

0; k <

10; k++)}

for(

int j =

0; j < count.length; j++)}

return arr;

}

版本二:

//基數排序2(使用list)

public

static

int[

]radixsort2

(int

arr)

int times =

(max +"")

.length()

; arraylist

> list =

newarraylist

<

>()

;for

(int i =

0; i <

10; i++

) list.

add(

newarraylist

<

>()

);for(

int i =

0, n =

1; i < times; i++

, n *=10)

int index =0;

for(

int j =

0; j < list.

size()

; j++)}

for(list l : list) l.

clear()

;}return arr;

}

十大排序演算法

1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...

十大排序演算法

排序規則 從左至右依次增大 一 基於比較的排序演算法 插入排序 逐個遍歷未排序序列,將其在已排序序列中從右到左比較,直到遇到比自己小的數,然後將元素插入到那個數的後面,有序序列從左向右生長。選擇排序 在未排序序列中選擇最小的元素,將其插入到已排序序列的末尾,有序序列從左向右生長。氣泡排序 從左至右逐...

十大排序演算法

github 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序...