选择排序

思路:

1、首先拿数组第一个元素依次与除其自身外的其他每个元素顺序比较,如果第一个元素大于剩下的某个元 素,就互换内容。

2、经过第一轮比较之后,此时,第一个元素就是数组中最小的元素。然后再拿第二个元素与除第一个元素和 其自身的元素进行比较,如果第二个元素大于剩下的某个元素,就互换内容。此时,第二个元素就是数组中倒数 第二小的元素。

3、依次类推,直到最后一个元素。

高效做法:只需要通过两个变量,一个记录最小值,一个记录最小值所在 的角标即可

public static void selectSort(int[]a)
{
    int minIndex=0;
    int temp=0;
    if((a==null)||(a.length==0))
        return;
    for(int i=0;i<a.length-1;i++)
    {
        minIndex=i;//无序区的最小数据数组下标
        for(intj=i+1;j<a.length;j++)
        {
            //在无序区中找到最小数据并保存其数组下标
            if(a[j]<a[minIndex])
            {
                minIndex=j;
            }
        }
        if(minIndex!=i)
        {
            //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。
            temp=a[i];
            a[i]=a[minIndex];
            a[minIndex]=temp;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用Objective-C实现几种基本的排序算法,并把排序的过程图形化显示。其实算法还是挺有趣的 ^ ^. 选择排序...
    囧书阅读 14,505评论 27 236
  • 1、基本思想 每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一...
    Sopphire阅读 5,121评论 0 0
  • 选择排序—简单选择排序 基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下...
    Temple_Li阅读 1,865评论 0 0
  • 选择排序与冒泡排序很接近,但是选择排序并不急于把两次比较中的结果交换位置。冒泡排序每比较一次,就会交换一次位置;选...
    腹黑小叶子orz阅读 2,425评论 0 1
  • 对于管理管理来说我是小白,对于知识管理来说更是小白,我还没有体系可言。 今晚听彭小六哥的知识管理课,让我思考...
    Ply坤阅读 3,064评论 0 1