内存排序(二)——选择排序

核心过程

算是冒泡的一个简单优化。
冒泡本质是每次把最大的数放最后(或者最小的放最前)。
那么每次都比较并交换相邻的两个数,不如直接选取最大数并和最后位置的数交换。
比较次数一样,但是交换次数大大减少。

public static void selectionSortCore(int[] list, int begin, int end){
    int maxIndex = begin;
    for (int i = begin; i <= end; i++) {
        if(list[maxIndex] < list[i]){
            maxIndex = i;
        }
    }
    int temp = list[maxIndex];
    list[maxIndex] = list[end];
    list[end] = temp;
}

迭代过程

与冒泡同理。

public static void selectionSortIteration(int[] list){
    for (int i = list.length - 1; i >= 0 ; i--) {
        selectionSortCore(list, 0, i);
    }
}

合并两过程的写法

public static void selectionSort(int[] list){
    for (int i = list.length - 1; i >= 0 ; i--) {
        int maxIndex = 0;
        for (int j = 0; j <= i; j++) {
            if(list[maxIndex] < list[j]){
                maxIndex = j;
            }
        }
        int temp = list[maxIndex];
        list[maxIndex] = list[i];
        list[i] = temp;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/匡宗贵 三首小诗三朵花, 妖娆绚丽胜奇葩。 若无高手谁能绘, 巾帼挥毫染彩霞。
    艾思阅读 5,017评论 25 50
  • 嫣然一笑,一段孽恋情缘;抱布贸丝,二人义定终生;单车既走,三岁才知错白头… 情愫益暖,嗤嗤如他,微笑辇撵过每寸光阴...
    青苔轻缓爬满阳光1105阅读 1,846评论 0 4
  • 我看到孙老师发的信息把自己写的最好的日记发给她。哎我觉得我写的都不是太好,我就不发了。我晚上没事就看到群里的日记。...
    家和万事兴_dbbc阅读 1,618评论 0 0
  • 文章用于个人学习,是对自己学习的简单小结,以便以后返回来学习。 1. 数据库基本操作 2. 示例 3. SQ...
    94very阅读 3,199评论 0 0
  • 今天是什么日子 起床:6:53 就寝:23:00 天气:晴 心情:暗怒 纪念日:圣诞节 任务清单 周目标·完成进度...
    抬头望见月_阅读 682评论 0 0