美文网首页
排序:选择排序法(Java,Kotlin)

排序:选择排序法(Java,Kotlin)

作者: 微风细雨007 | 来源:发表于2017-12-15 14:30 被阅读179次

定义

选择排序法定义

简单选择排序的基本思想:
第1趟,在待排序记录r[1] ~ r[n]中选出最小的记录,将它与r[1]交换;
第2趟,在待排序记录r[2] ~ r[n]中选出最小的记录,将它与r[2]交换;
以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

定义图解

选择排序,图片来源于网络

简单示例

Java

public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
        selectSort(arr);
    }

    private static void selectSort(int[] arr) {
        int size = arr.length;
        for (int i = 0; i < size; i++) {
            int minIndex = i;
            for (int j = i + 1; j < size; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                    //示例图片上交换的位置
                    //swap(arr,j,i);
                }
            }
            //优化过性能更好
            swap(arr, i, minIndex);
            System.out.print(arr[i] + ",");
        }
    }

    private static void swap(int[] arr, int x, int y) {
        int temp = arr[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }
}

Kotlin

fun main(args: Array<String>) {
    val arr: IntArray = intArrayOf(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
    sortSelect(arr)
}

fun sortSelect(intArray: IntArray) {
    val size = intArray.size
    for (i in 0 until size) {
        var minIndex: Int = i
        var j: Int = i + 1
        while (j < size) {
            if (intArray[j] < intArray[minIndex]) {
                minIndex = j
            }
            j++
        }
        swap(intArray, i, minIndex)
        print("${intArray[i]},")
    }
}

fun swap(intArray: IntArray, i: Int, j: Int) {
    var temp = intArray[i]
    intArray[i] = intArray[j]
    intArray[j] = temp
}

遇到的坑

  • 写交换方法的时候,要用数组,这个跟基本类型有关系
  • 如果把整形数组换成Object,这样要使用Integer,int不行
  • kotlin的for循环和java的不一样,用while

相关文章

  • 排序:选择排序法(Java,Kotlin)

    定义 选择排序法定义 简单选择排序的基本思想:第1趟,在待排序记录r[1] ~ r[n]中选出最小的记录,将它与r...

  • 各种排序方法

    冒泡排序法 选择排序法 链表排序法 qsort()函数排序法

  • 排序算法

    排序算法分类 排序算法常用主要有:冒泡排序法、快速排序法、选择排序法、插入排序法、堆排序法、归并排序法等几种。 ...

  • iOS常见算法

    升序算法:用冒泡排序法 选择排序法 快速排序

  • 排序算法总结

    选择排序法 插入排序法 冒泡排序法 归并排序法 自顶向下 自底向上 快速排序法 单路快速排序法 双路快速排序法 三...

  • js 常见排序算法(快速排序,选择排序等)

    快速排序法 选择排序 插入排序 冒泡排序

  • php实现几种常见的排序方法

    1. 冒泡排序法: 2. 选择排序法: 3.插入排序法: 4.快速排序法:

  • 常用的排序算法

    1. 冒泡排序: 2.快速排序法 3.插入排序法 4.选择排序法 5.归并排序法

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • JavaScript算法入门--排序--冒泡排序

    一般排序的常用方法有:冒泡法、插入法、选择法、快速排序、归并排序、桶排序、希尔排序、堆排序、基数排序、外部排序等。...

网友评论

      本文标题:排序:选择排序法(Java,Kotlin)

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