Java选择排序(升序和降序)

作者:神奇的周 | 创建时间: 2023-07-04
选择排序是简单排序的一种,其排序思想为:首先将第一个数标记为最大数,其位置为最大数的位置;然后排除第一个数,使用第一个数和剩下的数依次比较,若剩下的数大于第一个数,则继续比较,直到找到最大数为止;最后判断实际最大数的位置是否就是默认最大数的...
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]); } }

运行结果如下:

温馨提示

选择排序的效率为O(N*N),比较次数最多为N(N-1)/2,交换次数最多为N-1<N,其中N代表需要比较的数的个数;
选择排序不稳定
点击展开全文

更多推荐