Java初級排序演算法 選擇排序 插入排序 希爾排序

2021-09-23 14:31:57 字數 1693 閱讀 6362

package sort;

import edu.princeton.cs.algs4.in;

public

class

example

private

static

boolean

less

(comparable v,comparable w)

private

static

void

exch

(comparable[

] a,

int i,

int j)

private

static

void

show

(comparable[

] a)

public

static

boolean

issorted

(comparable[

] a)

public

static

void

main

(string[

] args)

}

其中,

less()方法用於對元素進行比較;

exch()方法用於交換元素。

這段**模板適用於任意實現了comparable介面的資料型別。

選擇排序的思想:

1.找到陣列中最小的元素;

2.將它和陣列的第乙個元素交換;

3.在剩下的元素中找到第二小的元素,將它和第二個元素交換;

4.依次類推。

特點:1.執行時間和輸入無關;

2.資料移動量是最下的。

3.比較次數:n2/

2n^2/2

n2/2

4.交換次數:n

nn

package sort;

import edu.princeton.cs.algs4.in;

public

class

example

}//less()、exch()、issorted()、main()方法見模板

}

1.最好情況下:

比較n −1

n-1n−

1交換0

002.最差情況下:

比較n 2/

2n^2/2

n2/2

交換n 2/

2n^2/2

n2/2

public

class

example

}//less()、exch()、issorted()、main()方法見模板

}

希爾排序為了加快速度簡單地改進了插入排序,交換不相鄰的元素以對陣列的區域性進行排序,並最終ongoing插入排序將區域性有序的陣列進行排序。

希爾排序的思想是使得陣列中任意間隔為h的元素都是有序的。

public

class

shell

h=h/3;

}}//less()、exch()/issorted()和main()方法見排序演算法模板

}

有經驗的程式猿有時會選擇希爾排序,因為對中等大小的陣列,它的執行時間是可以接受的。

它的**量很小,且不需要額外的記憶體。

演算法初級 選擇排序

選擇排序雖然改進了氣泡排序,把交換次數從o n2 減少到o n 但是比較次數仍為o n2 選擇排序的大致邏輯是把所有元素比較一遍,將最小的元素與0號元素交換位置。然後從1號元素開始繼續比較,將最小元素與1號元素交換位置。以此類推,這個演算法中有序的元素在左邊,與氣泡排序相反。private long...

初級排序 選擇排序

選擇排序分為兩部分 已排好序的,未排好序的 每次從未排好裡找出乙個最小的值,將這個值與未排好序的第乙個進行交換位置,意味著每次進行一次迴圈找出乙個最小值就相當於將乙個剩下未排序裡最小的給排進去。include using namespace std const int maxn 101 int ma...

java選擇排序演算法

選擇排序和氣泡排序差不多,只是氣泡排序在發現比它小的時候就交換,而選擇排序是只有在確定了最小的資料之後,才會發生交換。選擇排序的基本思想 第i趟簡單選擇排序是指通過n i次關鍵字的比較,從n i 1個記錄中選出關鍵字最小的記錄,並和第i個記錄進行交換。先臨時記錄其位置,只有在一趟 迴圈完以後確定了最...