`
lfc_jack
  • 浏览: 140476 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

选择排序

 
阅读更多
选择排序是一种简单直观的排序算法,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间。

算法步骤


1,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
2,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

3,重复第二步,直到所有元素均排序完毕。


java代码实现:

package com.paixu;

public class selectionSort {

	/**
	 * 选择排序 实现原理: 1, 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
	 * 
	 * 2,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
	 * 
	 * 3,重复第二步,直到所有元素均排序完毕。
	 */
	public static void main(String[] args) {
		// 定义一个数组
		int[] selection = { 1, 4, 5, 7, 81, 23, 46, 67, 98, 64, 33, 37, 99,
				111, 23, 3, 298 };
		System.out.println("未排序的数组:\n");
		for (int m = 0; m < selection.length; m++) {
			System.out.print(selection[m]+" ,");
		}
		// 定义最小值的索引以及一个临时变量
		int minIndex, temp;
		for (int i = 0; i < selection.length - 1; i++) {
			// 设置开始排序的时候,设置第一个为最小的值,便于后续比较
			minIndex = i;
			//每次比较最小值时,比较过的不再比较范围(这里不设置j=i+1),排序会错误的哦
			for (int j = i+1; j < selection.length; j++) {
				// 遍历数组,找下一个最小值的索引
				if (selection[j] < selection[minIndex]) {
					minIndex = j;
				}
			}
			// 数据交换
			temp = selection[i];
			selection[i] = selection[minIndex];
			selection[minIndex] = temp;

			System.out.println("\n第" + (i+1) + "次排序后:\n");
			for (int n = 0; n < selection.length; n++) {
				System.out.print(selection[n]+" ");
				
			}
			System.out.println("");
		}

	}

}





结果:



未排序的数组:

1 ,4 ,5 ,7 ,81 ,23 ,46 ,67 ,98 ,64 ,33 ,37 ,99 ,111 ,23 ,3 ,298 ,
第1次排序后:

1 4 5 7 81 23 46 67 98 64 33 37 99 111 23 3 298 

第2次排序后:

1 3 5 7 81 23 46 67 98 64 33 37 99 111 23 4 298 

第3次排序后:

1 3 4 7 81 23 46 67 98 64 33 37 99 111 23 5 298 

第4次排序后:

1 3 4 5 81 23 46 67 98 64 33 37 99 111 23 7 298 

第5次排序后:

1 3 4 5 7 23 46 67 98 64 33 37 99 111 23 81 298 

第6次排序后:

1 3 4 5 7 23 46 67 98 64 33 37 99 111 23 81 298 

第7次排序后:

1 3 4 5 7 23 23 67 98 64 33 37 99 111 46 81 298 

第8次排序后:

1 3 4 5 7 23 23 33 98 64 67 37 99 111 46 81 298 

第9次排序后:

1 3 4 5 7 23 23 33 37 64 67 98 99 111 46 81 298 

第10次排序后:

1 3 4 5 7 23 23 33 37 46 67 98 99 111 64 81 298 

第11次排序后:

1 3 4 5 7 23 23 33 37 46 64 98 99 111 67 81 298 

第12次排序后:

1 3 4 5 7 23 23 33 37 46 64 67 99 111 98 81 298 

第13次排序后:

1 3 4 5 7 23 23 33 37 46 64 67 81 111 98 99 298 

第14次排序后:

1 3 4 5 7 23 23 33 37 46 64 67 81 98 111 99 298 

第15次排序后:

1 3 4 5 7 23 23 33 37 46 64 67 81 98 99 111 298 

第16次排序后:

1 3 4 5 7 23 23 33 37 46 64 67 81 98 99 111 298 


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics