欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

选择排序--简单选择排序与直接选择排序的区别

程序员文章站 2024-01-17 21:36:04
...

直接选择排序:

思路(按升序):第一轮要在位置0找到最小的元素,所以0要与(0+1)~length-1挨个比;

第二轮要在位置1找到第二小的元素,所以1要与(1+1)~length-1挨个比;

第n轮要在位置n-1找到对应元素,所以n要与(n+1)~length-1挨个比;

位置length-2与位置length-1比较,确定length-2对应的元素length-1自然就确定了,因为已经没有可比较的了。

综上,一共需要比较length-2轮,即外循环0<=n<length-1,也可以说是有length-1个位置需要确定;每轮需要n与n+1~length-1比较,即内循环n+1<=m<length

简单选择排序:

直接选择排序每次遇到n-1>n 的时候就要发生交换;简单选择排序则只是记录下较大那个元素的位置,这样一轮过后这个记录变身本轮所要选取的最大值,而每轮需要确定的位置已由外层循环确定,只需将最大元素位置记录所对应的元素与要确定的位置交换机可。

/**
	 * 简单选择排序
	 * @param arr 排序数组
	 */
	public static void sort(int[] arr) {
		int min;
		for(int i=0;i<arr.length-1;i++) {
			min = i;
			for(int j=i+1;j<arr.length;j++) {
				if(arr[min]>arr[j]) {
					min = j;
				}
			}
			if(min!=i) {
				arr[min]=arr[i]+arr[min];
				arr[i]=arr[min]-arr[i];
				arr[min]=arr[min]-arr[i];
			}
		}
		System.out.println(Arrays.toString(arr));
	}


相关标签: 选择排序