美文网首页
读《算法 第四版》算法3--选择排序的实现

读《算法 第四版》算法3--选择排序的实现

作者: KUN叔 | 来源:发表于2017-02-17 15:42 被阅读58次

选择排序的实现

-自然语言描述:
首先,找到数组中最小的那个元素,其次,将它和数组的第
一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。
-Java语言描述:

  public static void sort(Comparable[] a){
    int N = a.length;
    for (int i = 0; i < N; i++){
      int min = i;
      for (int j = i + 1; j < N; j++)
          if (a[j] < a [min]) min = j;
          Comparable temp = a[min];
          a[min] = a[j];
          a[j] = temp;
    }
  }

-验证代码:

  public class Selection {
    public static void sort(Comparable[] a){
        //升序
        int N = a.length;
        for(int i = 0; i < N; i++){
            int min = i;
            for (int j = i +1; j < N ; j++ ) {
                if (less(a[j], a[min])) min =j;
            }
        exch(a, i, min);
    }
}
private static boolean less(Comparable v, Comparable w){ return v.compareTo(w) < 0; }

private static void exch(Comparable[] a, int i, int j){ 
    Comparable t = a[i]; a[i] = a[j]; a[j] = t; }
    private static void show(Comparable[] a){ // 在单行中打印数组
        for (int i = 0; i < a.length; i++)
        System.out.print(a[i] + " ");
        System.out.println();
    }

    public static boolean isSorted(Comparable[] a){
        int length = a.length;
        for (int i = 1;i < length ;i++ ) {
            if (less(a[i],a[i -1])) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String[] a = In.readStrings();
        sort(a);
        assert  isSorted(a);
        show(a);
    }
}

其中使用到了作者的库In.java.可以自行下载,algs4 · github
-运行:
1.首先在同一目录新建test.txt.然后在里面以空格分隔的字符。例如:A D O Q E F K
2.cd 到目录,执行javac Selection.java
3.执行java Selection < test.txt

相关文章

  • p156算法2.1选择排序

    public class Selection {//选择排序 }算法学习来自<算法第四版>书籍

  • 算法-选择排序

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

  • 读《算法 第四版》算法3--选择排序的实现

    选择排序的实现 -自然语言描述:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • python实现选择排序(SelectionSort)

    python实现【选择排序】 算法原理及介绍 选择排序(Selection-sort)是一种简单直观的排序算法。它...

  • 排序算法之快速排序

    排序算法之快速排序 参考自算法(第四版),快速排序 算法思想 对数组中取一个切分元素,下文简称pivot 然后使得...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 【算法】排序(一)选择排序

    在排序算法中,最简单的莫过于选择排序了。 本文将介绍以下内容 排序思路算法实现(JAVA)测试阶段算法分析 排序思...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • java 实现排序算法之「选择排序」

    java 实现排序算法系列 继冒泡排序算法之后,选择排序终于和大家见面了。为什么冒泡排序之后要说选择排序呢,是因为...

网友评论

      本文标题:读《算法 第四版》算法3--选择排序的实现

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