美文网首页
内存排序(二)——选择排序

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

作者: 旺叔叔 | 来源:发表于2019-03-22 14:38 被阅读0次

核心过程

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

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;
    }
}

相关文章

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

    核心过程 迭代过程 合并两过程的写法

  • 常见排序算法总结

    排序算法一般分为: 内部排序(In-place sort)不占用额外内存或者占用常数内存,如:插入排序、选择排序、...

  • JavaScript的排序算法——选择排序

    选择排序(Selection Sort) 选择排序是一种排序算法,是一个占用常用内存(In-place)的排序方法...

  • iOS排序算法

    (插入排序、选择排序、交换排序、归并排序、基数排序) 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序...

  • 数据结构与算法(二)

    排序算法 1.内部排序:数据记录在内存中进行排序 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归...

  • PHP学习之排序

    排序分为内部排序和外部排序内部排序:所有数据都加载到内存当中。主要方法有冒泡法、选择排序法、插入式排序法和快速排序...

  • Java实现常见的算法

    主要罗列了常见的选择排序,冒泡排序和快速排序,还有二分查找的算法。 选择排序 冒泡排序 快速排序 二分查找 注意二...

  • 排序算法

    冒泡排序 选择排序 插入排序二分插入排序希尔排序 堆排序 归并排序 快速排序 交换排序类:冒泡排序快速排序 选择排...

  • 电废人生之 C基础系列20210114

    摸鱼之 在下列几种排序方法中,要求内存量最大的是______。 A快速排序 B插入排序 C选择排序 D归并排序 快...

  • python排序方法

    一、冒泡排序 二、快速排序 三、选择排序

网友评论

      本文标题:内存排序(二)——选择排序

      本文链接:https://www.haomeiwen.com/subject/bpolvqtx.html