选择排序

2018年03月18日 08:19 | 2923次浏览 作者原创 版权保护

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5][3]交换,导致第一个5挪动到第二个5后面)。


通俗的解释

对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,(V型知识库编辑原创---www.vxzsk.com),就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。


再次解释概念

"选择排序"就是第0个逐步和后面全部的比,比完0位置就得到最小的数,紧接着再从1位置对比后面的元素,以此类推,逐步得到从小到大的值.(V型知识库编辑原创---www.vxzsk.com)


特点

一.每次比当前位到后面的所有

     1.第一轮:0位开始,比后面全部值,1轮后:得到最小值在0位置

     2.第二轮:1位开始,比后面全部值,2轮后:得第2小在1位置

     3.第二轮:2位开始,比后面全部值,3轮后:得第3小在2位置

     4.第二轮:3位开始,比后面全部值,4轮后:得第4小在3位置

二.最终得到从左到右到大的值


图解原理

int[] arr = { 4, 2, -6, 9, 1 } 

选择排序

java代码实现

package com.wepayweb.weixin.util.paixu;
/***
 * 
 * @author V型知识库 www.vxzsk.com
 *
 */
public class Selsort {
	   final int MAX=20;  
	   int num[]=new int[MAX];  
	   {  
	       System.out.print("排序前生成的随机数组是:");  
	       for(int i=0;i<20;i++){  
	           num[i]=(int)(Math.random()*100);  
	           System.out.print(num[i]+" ");  
	       }  
	       System.out.println();  
	   }  
	     
	
	public void selsort(int number[]) {  
        int i, j, k, m, temp;  
        long start,end;  
          
        start=System.nanoTime();  
        for(i = 0; i < MAX-1; i++) {  
            m = i;  
            for(j = i+1; j < MAX; j++){  
                if(number[j] < number[m]){  
                 m = j;  
                }  
            }  
            if( i != m){  
                temp=number[i];  
                number[i]=number[m];  
                number[m]=temp;  
            }  
        }  
        end=System.nanoTime();  
          
        System.out.println("-----------------选择排序法------------------");  
        System.out.print("排序后是:");  
        for(i=0;i<=MAX-1;i++){  
            System.out.print(number[i]+" ");  
        }  
        System.out.println();  
        System.out.println("排序使用时间:"+(end-start)+" ns");  
    }  
     

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Selsort s = new Selsort();
		s.selsort(s.num.clone());                        //选择排序法  
	}

}



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/678.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程