`
lfc_jack
  • 浏览: 139065 次
  • 性别: 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 


分享到:
评论

相关推荐

    Python实现选择排序

    选择排序: 选择排序(Selection sort)是一种简单直观的 排序算法 。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,...

    Python实现的选择排序算法示例

    主要介绍了Python实现的选择排序算法,结合实例形式分析了Python选择排序的概念、原理及简单实现技巧,需要的朋友可以参考下

    python选择排序算法实例总结

    主要介绍了python选择排序算法,以三个实例以不同方法分析了Python实现选择排序的相关技巧,需要的朋友可以参考下

    Java实现的选择排序

    选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序...

    简单选择排序

    简单选择排序

    java排序算法之_选择排序(实例讲解)

    下面小编就为大家带来一篇java排序算法之_选择排序(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    冒泡排序&选择排序&插入排序

    选择排序 插入排序 冒泡排序 冒泡排序(最好是O(n), 最坏O(n2)) 原理: 拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结束后最上面那个一定是最大的数 ...

    选择排序1

    示例使用选择排序算法对序列89 45 68 90 29 34 17 34 进行排序,排序过程如下:第1次遍历待遍历区间:[89 45 68 90 29 34 1

    C++选择排序算法实例

    主要介绍了C++选择排序算法实例,本文先是介绍了什么是选择排序,然后给出了实现代码,需要的朋友可以参考下

    C++实现选择排序(selectionSort)

    主要为大家详细介绍了C++实现选择排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Global site tag (gtag.js) - Google Analytics