选择排序

98 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

选择排序算法(不稳定排序算法,相同两个数,有可能会调换位置)
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,放在已排好序的数列的最后,直到全部待排序的数据元素排完,
34,4,56,17,90,65 34与4比较,4小,4跟其他比
4,34,56,17,90,65 第一轮,比较5次
4,17,56,34,90,65 第二轮,比较4次
4,17,34,56,90,65 第三轮,比较3次
4,17,34,56,90,65 第四轮,比较2次
4,17,34,56,65,90 第五轮,比较1次

		int[] nums = {34,4,56,17,90,65};
		int minIndex = 0;
//		控制轮数
		for (int i = 0; i < nums.length-1; i++) {
			minIndex = i;//每轮假设一个最小值下标
			for (int j = i+1; j < nums.length; j++) {
				if (nums[minIndex] > nums[j]) {
					minIndex = j;
				}
			}
//			判断需要交换的数下标是否为自己
			if (minIndex != i) {
				nums[minIndex] = nums[minIndex]+nums[i];
				nums[i] = nums[minIndex]-nums[i];
				nums[minIndex] = nums[minIndex]-nums[i];
			}
		}
		for (int i : nums) {
			System.out.print(i+" ");
		}