选择排序初识,改进?

5人阅读 评论(0) 收藏 举报
分类:

        选择排序改进了冒泡排序,将其交换次数从O(N 2) 减少到了O(N),但是比较的次数仍然为O(N2),即使这样,选择排序依然为大数据量的排序提出了一个非常重要的改进,减少了大量数据在内存中的交换次数。

          talk is cheap ,show my code!
           

package javal.util.test;

public class SelectSort {
	public static void main(String[] args) {
		long[] array = new long[] {45,2,344,55,66,1,2234,54,6};
		selectionSort(array);
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
	}
	
	public static void selectionSort(long[] array) {
		int out,in,min,len=array.length;
		
		for(out =0; out < len-1 ; out++) {
			min = out;
			for(in= out+1; in<len; in++) {
				if(array[in] < array[min]) {
					min = in;
				}
			}
			long temp =array[out];
			array[out] = array[min];
			array[min] = temp;
		}
	}
}

        选择排序几个注意点:

        1.   外层for循环, 从数组的开始位置(第0位)开始,(即 比较当前位置的数据项与剩余数据项中最小值的大小)。到数组的最后一位(length-1)结束,每次循环起始位置向右移动一位。 每执行一次外循环,内循环的其实位置向右移动一位,这样下次循环就不会在处理小于out 的数据项,
        2.   内层for循环 , 起始位置为外层for循环的起始位加1,因为要找出剩余数据项中最小的值来做比较。到length-1结束循环,程序中 因为length-1执行过一次,所以内层for循环的结束位为length.  内层for循环的目的就是找出 剩余数据项中的最小值。 

        3. 每经过一次内循环,都会找到一个剩余数据项中的最小值,然后和out位置的最小值 做比较,如果 小于out位置的数据项,则交换两个数据项的位置。

        选择排序程序中的不变性为    下标小于out的数据项是有序的。

查看评论

选择排序及改进方法

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是...
  • yangle4695
  • yangle4695
  • 2016-08-15 20:05:08
  • 900

排序算法(二)——选择排序及改进

选择排序 基本思想 冒泡排序中有一个缺点,比如,我们比较第一个数a1与第二个数a2的时候,只要a1比a2大就会交换位置,但是我们并不能确定a2是最小的元素,假如后面还有比它更小的,该元素还会与a2...
  • u012152619
  • u012152619
  • 2015-08-06 00:03:35
  • 2279

C++ 选择排序算法的实现与改进(含笔试面试题)

选择排序(Selection sort)也是一种最简单直观的排序算法。 算法步骤 1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 2)再从剩余未排序元素中继续寻找最小(大)元...
  • misayaaaaa
  • misayaaaaa
  • 2017-03-28 09:32:57
  • 1027

排序算法小结(2)选择排序

选择排序
  • cpu_12593
  • cpu_12593
  • 2015-08-28 14:27:31
  • 863

“深入理解”—选择排序算法

选择排序算法有两种:直接选择排序和堆排序
  • qq_25827845
  • qq_25827845
  • 2016-07-10 11:37:25
  • 6945

八大排序算法之选择排序

选择排序—简单选择排序(Simple Selection Sort)
  • ye_scofield
  • ye_scofield
  • 2014-09-16 10:10:53
  • 8886

8 排序--选择排序,插入排序,冒泡排序,shell排序,快速排序(递归,迭代,改进版本),归并排序

排序 排序是使数据有序化的操作。这里的数据包括关键字和其它信息项,关键字用来控制排序。排序使得数据有序化,实际上是使数据按关键字的某个定义明确的顺序规则排列。如果被排序的数据在内存中,那么这个排序方...
  • ajian005
  • ajian005
  • 2012-11-08 15:21:51
  • 1131

array sorting

  • 2013年05月03日 01:03
  • 94KB
  • 下载

各种排序算法java实现

  • 2008年10月08日 16:39
  • 89KB
  • 下载

算法设计实验报告-快速排序和归并排序

  • 2012年01月20日 16:08
  • 130KB
  • 下载
    个人资料
    等级:
    访问量: 0
    积分: 183
    排名: 0
    文章存档