Java编程基础:常见排序算法-选择排序

需求:使用另一种排序算法,给数组{23,18,31,41,11,26,5}进行排序,先上一张图来说明选择排序,手动排序之后的结果:

图是简陋了些,再上实现代码:

// 选择排序,传入两个参数,一个数组,一个排序方式:ace升序,desc降序
	public static int[] selectSort(int[] arr, boolean isAce) {
		// 元素取值从0开始,到arr.length结束
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) { // 内循环控制循环次数,i取值的角标,j是后一个取值的角标,两者进行比较
				if (isAce) { // 升序
					if (arr[i] > arr[j]) { // 如果前面的元素大,就交换位置
						int temp = arr[i]; // 中间变量
						arr[i] = arr[j];
						arr[j] = temp;
					}
				} else { // 降序
					if (arr[i] < arr[j]) { // 如果前面的元素大,就交换位置
						int temp = arr[i]; // 中间变量
						arr[i] = arr[j];
						arr[j] = temp;
					}
				}
			}
			System.out.print("第" + (i + 1) + "次选择排序后:");
			printArray(arr);
		}
		return arr;
	}

	// 打印数组显示
	public static void printArray(int arr[]) {
		System.out.print("{");
		for (int i = 0; i < arr.length; i++) { // 遍历输出数组的每个元素
			if (i == arr.length - 1) { // 取出最后一个元素,后面没有任何符号
				System.out.print(arr[i]);
			} else {
				System.out.print(arr[i] + ",");
			}
		}
		System.out.println("}\n");
	}

 测试代码:printArray打印输出的方法

public static void main(String[] aaa) {	

        int[] arr ={23,18,31,41,11,26,5};
		System.out.print("原数组的数据:");
		printArray(arr);

        int[] arr2 = selectSort(arr, true);
		System.out.print("选择排序后数组输出:");
		printArray(arr2);
}

结果打印:就是画图的六次结果:

原数组的数据:{23,18,31,41,11,26,5}

第1次选择排序后:{5,23,31,41,18,26,11}

第2次选择排序后:{5,11,31,41,23,26,18}

第3次选择排序后:{5,11,18,41,31,26,23}

第4次选择排序后:{5,11,18,23,41,31,26}

第5次选择排序后:{5,11,18,23,26,41,31}

第6次选择排序后:{5,11,18,23,26,31,41}

选择排序后数组输出:{5,11,18,23,26,31,41}

排序算法,java的我就不再写了,学习别人写好的(非常好),转载一个java排序算法CSDN博客