Java選擇排序(升序和降序)?

選擇排序是簡單排序的一種,其排序思想為:首先將第一個數標記為最大數,其位置為最大數的位置;然後排除第一個數,使用第一個數和剩下的數依次比較,若剩下的數大於第一個數,則繼續比較,直到找到最大數為止;最後判斷實際最大數的位置是否就是預設最大數的位置,若不是,則用第一個數的位置和最大數的位置進行交換,則此時第一個數就是實際最大數。以此類推,比較剩下的數,得到降序排列;反之為升序排列。

Java選擇排序(升序和降序)

Java選擇排序(升序和降序)

工具/原料

雙重迴圈

方法/步驟

/** 選擇降序排序 **/

public static int[] dascSort(int[] param) {

int in, out;

int max;

int temp;

for (out = 0; out < param.length; out++) {

// 預設最大數的位置

max = out;

for (in = out + 1; in < param.length; in++) {

if (param[max] < param[in]) {

// 獲取最大數的位置

max = in;

}

}

// 當預設位置的最大數並不是實際的最大數時,和實際的最大數交換位置

if (out != max) {

temp = param[out];

param[out] = param[max];

param[max] = temp;

}

}

return param;

}

/** 選擇升序排序 **/

public static int[] ascSort(int[] param) {

int in, out;

int max;

int temp;

for (out = param.length - 1; out > 0; out--) {

// 預設最大數的位置

max = out;

for (in = out - 1; in > 0; in--) {

if (param[max] < param[in]) {

max = in;

}

}

// 當預設位置的最大數並不是實際的最大數時,和實際的最大數交換位置

if (out != max) {

temp = param[out];

param[out] = param[max];

param[max] = temp;

}

}

return param;

}

執行升序和降序方法:

public static void main(String[] args) {

int[] param = { 1, 6, 7, 5 };

param = ascSort(param);

System.out.print("升序結果為:");

for (int i = 0; i < param.length; i++) {

System.out.print(param[i]);

}

System.out.println("");

param = dascSort(param);

System.out.print("降序結果為:");

for (int i = 0; i < param.length; i++) {

System.out.print(param[i]);

}

}

執行結果如下:

Java選擇排序(升序和降序)

注意事項

選擇排序的效率為O(N*N),比較次數最多為N(N-1)/2,交換次數最多為N-1

選擇排序不穩定

位置, 實際, 個數, 升序, 降序,
相關問題答案