美文网首页
常见排序算法(简单排序)

常见排序算法(简单排序)

作者: Jayden梅 | 来源:发表于2018-02-25 22:08 被阅读28次

简单排序算法实现

冒泡排序(Bubble Sort)

object BubbleSort {

    @JvmStatic
    fun main(args: Array<String>) {
        val a = intArrayOf(24, 12, 36, 22)
        val sort = BubbleSort.sort(a)
        for (i in sort) {
            println(i.toString() + ", ")
        }
    }

    //循环判断当前数是否大于后面一位,如果是交换位置
    fun sort(a: IntArray): IntArray {
        var x: Int
        for (i in a.indices) {
            for (j in 0 until a.size - 1) {
                if (a[j] > a[j + 1]) {
                    x = a[j + 1]
                    a[j + 1] = a[j]
                    a[j] = x
                }
            }
        }
        return a
    }
}

选择排序

在已排序好的数据中插入待排序数据

17,12,4,5
    -> 12,17,4,5
     ->12,17,17,5 |12,12,17,5
      ->4,12,17,5

object InsertSort{

      fun main(args: Array<String>){
           val s:IntArray= intArrayOf(78, 12, 4, 9, 13)
           val ints:IntArray = sort(s)
           println(ints.contentToString())
    }

      fun sort(a: IntArray):IntArray{
              var i = 1
              var j : Int
              var x = 0

              while(i < a.size){
                    x = a[i]
                    j = i
                    while(j > 0 &&  a[j-1] > x){
                          a[j] = a[j-1]
                          --j
                    }
                    a[j] = k
                    i++
            }
                return a
      }
}

快速排序

object QuickSort {

    @JvmStatic
    fun main(args: Array<String>) {
        val array = intArrayOf(7, 3, 2, 23, 67, 5, 6)
        sort(array, 0, 6)
        println(Arrays.toString(array))
    }

    /**
     * 7,3,2,23,67,5,6
     * 6,3,2,23,67,5,6
     * 6,3,2,23,67,5,23
     * 6,3,2,7,67,5,23
     *
     */
    fun sort(array: IntArray, l: Int, r: Int) {
        if (l < r) {
            var i: Int
            var j: Int
            val k: Int
            i = l
            j = r
            k = array[i]//选择基数

            while (i < j) {
                //从右往左选择小于k的值
                while (i < j && array[j] > k)
                    j--
                if (i < j) {
                    array[i++] = array[j] //array[i] = array[j]
                }
                //从左往右选择大于k的值
                while (i < j && array[i] < k)
                    i++
                if (i < j) {
                    array[j--] = array[i]
                }

            }
            array[i] = k
            sort(array, l, i - 1) /* 递归调用 */
            sort(array, i + 1, r) /* 递归调用 */
        }

    }
}

选择排序

未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;
从左比较最小那一个

object SelectSort{

    @JvmStatic
    fun main(args: Array<String>) {
        val a = intArrayOf(12, 9, 8, 26, 5, 6)

        val sort = sort(a)
        for (c in sort) {
            print(c.toString() + ", ")

        }
    }

        fun sort(a:IntArray):IntArray{
            var x : Int
            for(i in a.indices){
                for(j in i +1 until a.size){
                        x = a[j]
                        if(a[j] < a[i]){
                              array[j] = array[i]
                              array[i] = x
                      }
                }
            }
            return a
      }
}

相关文章

  • 经典算法---排序(摘抄)

    一、排序算法 前言:常见排序算法分类 非线性时间比较类排序:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入...

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

  • 常见排序算法之冒泡排序

    常见排序算法之冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走访过要排序的元素列,...

  • 常见的排序算法(JavaScript实现)

    摘要:本文简单介绍几个常见的排序算法,包括:冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序。列出的代码...

  • Python知识点:常见算法的python实现

    提到排序算法,常见的有如下几种:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序;查找算法最常见...

  • 排序算法

    常见的排序算法有: 冒泡排序 快速排序 插入排序 归并排序 堆排序 1. 冒泡排序 冒泡排序是一种极其简单的排序算...

  • 排序算法☞冒泡排序,插入排序,选择排序

    排序算法有很多,这里简单谈谈冒泡,插入,选择排序算法:1、冒泡排序:这个应该是比较常见,而且面试经常会考的。该排序...

  • 排序算法

    常见排序算法及JAVA实现 简单选择排序(SelectSort) 选择排序思想很简单,对所有元素进行遍历,选出最小...

  • 常见排序算法集锦

    一般而言,常见的排序算法包括以下几类: 交换排序:冒泡排序 快速排序 选择排序:简单选择排序 堆排序 插入排序:直...

网友评论

      本文标题:常见排序算法(简单排序)

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