码迷,mamicode.com
首页 > 编程语言 > 详细

Java再学习-算法之选择排序

时间:2016-05-12 13:20:06      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

        继上篇文章讲到插入排序和冒泡排序算法。这次来看一下选择排序。

        和上两个循环一样,还是分成两套循环,外循环起指针作用,用来指定每次循环的元素值和元素序列,而内部循环则起到真正的快速排序逻辑。首先如果我们取到第i值,那么我们要与第i+1,i+2,....等元素进行对比,找到i元素后面最小的元素,与之交换位置即可,只不过这里的交换位置比较新颖,我们看下面的代码:

   

package cn.tgb.sort;

import java.util.Arrays;

//选择排序
public class SelectionSort {
	// 生成随机数
	private static int[] input = new int[] { (int) (Math.random() * 100),
					(int) (Math.random() * 100), (int) (Math.random() * 100),
					(int) (Math.random() * 100), (int) (Math.random() * 100),(int) (Math.random() * 100),(int) (Math.random() * 100)};
	public static void main(String[] args) {
		//先打印出随机数元素序列
		System.out.println(Arrays.toString(input));
		//外循环起到指针作用
		for (int i = 0; i < input.length - 1; i++) {
			//首选记录第一次循环 指针的元素值
			int key = input[i];
			//指针序号
			int index = i;
			// 比较当前值和下一个值的关系,记录下较小值的值和索引数,用于交换。
			for (int j = i + 1; j < input.length; j++) {
				//如果指针元素值小于后面的元素值,值不变,否则交换值
				key = key < input[j] ? key : input[j];
				//如果指针元素值小于后面的元素值,序号不变,否则交换序号
				index = key < input[j] ? index : j;
			}
			//指针找到最大值的位置,变成了指针元素值
			input[index] = input[i];
			//当前指针的值,变成了最小值key
			input[i] = key;

			//打印每次排序的结果
			System.out.println("第" + (i + 1) + "次排序");
			
			for (int k = 0; k < input.length; k++) {
				System.out.print(input[k] + " ");
			}
			System.out.println(" ");
		}	
	}
}

执行结果如下图所示:


技术分享



在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
   


          综上,冒泡排序,插入排序和选择排序,根据元素序列的不同情况,来选择合适的排序算法。


Java再学习-算法之选择排序

标签:

原文地址:http://blog.csdn.net/u010158267/article/details/51362895

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!