选择排序(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()); //选择排序法 } }
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程