Java实现选择排序算法的实例教程_java

选择排序概念

选择排序也是一种交换排序算法,和冒泡排序有一定的相似度,因此个人认为选择排序可以视为冒泡排序的一种改进算法。它的思路是这样的:
设现在要给数组arr[]排序,它有n个元素。
1对第一个元素(Java中,下标为0)和第二个元素进行比较,如果前者大于后者,那么它一定不是最小的,但是我们并不像冒泡排序一样急着交换。我们可以设置一个临时变量a,存储这个目前最小的元素的下标。然后我们把这个目前最小的元素继续和第三个元素做比较,如果它仍不是最小的,那么,我们再修改a的值。如此直到和最后一个元素比较完,可以肯定a存储的一定是最小的元素的下标。
2.如果a的值不为0(初始值,即第一个元素的下标),交换下标为a和0的两个元素。
3.重复上述过程,这次从下标为1的元素开始比较,因为下标为0的位置已经放好了最小的元素了。
4.如此直到只剩下最后一个元素,可以肯定这个元素就是最大的了。
5.排序完成。
很显然,这个算法也需要n-1轮排序。
需要注意的是,以上阐述的只是每次找最小值的办法。实际上也可以每次找最大值,不过那就需要每次放到数组尾巴上了。

Java实现代码:
SelectArray.java

package ch02;

public class SelectArray {
  // 数组
  private long[] arr;

  // 数组中有效数据的大小
  private int elems;

  // 默认构造函数
  public SelectArray() {
    arr = new long[50];
  }

  public SelectArray(int max) {
    arr = new long[max];
  }

  // 插入数据
  public void insert(long value) {
    arr[elems] = value;
    elems++;
  }

  // 显示数据
  public void display() {
    for (int i = 0; i < elems; i++) {
      System.out.print(arr[i] + " ");
    }
    System.out.println();
  }

  // 选择排序
  public void selectSort(){
    int min = 0;
    long tmp = 0L;
    for(int i = 0; i < elems -1; i++){
      min = i;
      for(int j = i + 1; j < elems; j++) {
        if(arr[j] < arr[min]) {
          min = j;
        }
      }
      tmp = arr[i];
      arr[i] = arr[min];
      arr[min] = tmp;
    }
  }
}

测试代码:

package ch02;

public class TestSelectArray {

  public static void main(String[] args) {
    SelectArray sArr = new SelectArray();
    sArr.insert(89);
    sArr.insert(54);
    sArr.insert(667);
    sArr.insert(7);
    sArr.insert(12);
    sArr.insert(43);
    sArr.insert(12);

    sArr.display();
    sArr.selectSort();
    sArr.display();

  }

}

结果:

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 排序算法
选择排序
java实现快速排序算法、java实现冒泡排序算法、排序算法java实现、java实现推荐算法实例、java实现各种排序算法,以便于您获取更多的相关知识。

时间: 2025-01-01 13:32:23

Java实现选择排序算法的实例教程_java的相关文章

JAVA简单选择排序算法原理及实现_java

简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2):空间复杂度 O(1) 算法改进:每次对比,都是为了将最小的值放到第一位,所以可以一比到底,找出最小值,直接放到第一位,省去无意义的调换移动操作

java实现选择排序算法_java

java实现选择排序算法 public static void selectSort(int[] array) { for (int i = 0; i < array.length - 1; i++) { int min = i; for (int j = i + 1; j < array.length; j++) { if (array[j] < array[min]) { min = j; } } Sort.swap(array, i, min);//交换i和min } } 选择排序

C语言选择排序算法及实例代码_C 语言

选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直到所有的数从小到大排序. 在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换. 下面,以对 3  2  4  1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所在的位置. 第1轮 排序过程 (寻找第1小的数所在的位置) 3  2  4  1(最初, m

Java对数组实现选择排序算法的实例详解_java

一. 算法描述    选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成. 以下面5个无序的数据为例: 56 12 80 91 20(文中仅细化了第一趟的选择过程) 第1趟:12 56 80 91 20 第2趟:12 20 80 91 56 第3趟:12 20 56 91 80 第4趟:

Swift实现Selection Sort选择排序算法的实例讲解_Swift

选择排序Selection Sort是一种和插入排序Insertion Sort类似的排序方法,它同样只适用于对规模不大的集合进行排序.它的核心思想是,在序列内部,把序列逻辑上分成已排序和未排序两部分,不断找到未排序部分中最符合排序规则的元素,添加进已排序部分,直到序列中所有元素都已经添加到了已排序部分,此时,整个序列就排序完成了. 冒泡排序是两两比较不断交换来实现排序,所以比较繁琐. 而选择排序  则是先选择要交换的那个数,才去交换.这样就可以省去很多不必要的步骤. Swift版实现示例: f

使用Java实现希尔排序算法的简单示例_java

简介希尔排序(缩小增量法) 属于插入类排序,由Shell提出,希尔排序对直接插入排序进行了简单的改进:它通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项大跨度地移动,当这些数据项排过一趟序之后,希尔排序算法减小数据项的间隔再进行排序,依次进行下去,进行这些排序时的数据项之间的间隔被称为增量,习惯上用字母h来表示这个增量. 常用的h序列由Knuth提出,该序列从1开始,通过如下公式产生: h = 3 * h +1 反过来程序需要反向计算h序列,应该使用 h=(h-

python选择排序算法实例总结

  本文实例总结了python选择排序算法.分享给大家供大家参考.具体如下: 代码1: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def ssort(V): #V is the list to be sorted j = 0 #j is the "current" ordered position, starting with the first one in the list while j != len(V): #this is the replacin

Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)_java

一.插入排序算法实现java版本 public static int[] insert_sort(int[] a) { for (int i = 0; i < a.length; i++) { for(int j=i+1;j>0&&j<a.length;j--) { if(a[j]<a[j-1]) { int tmp = a[j]; //这样定义初始化逻辑上是可以的,j变量,每次tmp的值变化的 a[j] = a[j-1]; a[j-1] = tmp; } } }

选择排序算法的JAVA实现

package Utils.Sort; /** *@author Linyco *利用选择排序法对数组排序,数组中元素必须实现了Comparable接口. */ public class ChooseSort implements SortStrategy { /** *对数组obj中的元素以选择排序算法进行排序 */ public void sort(Comparable[] obj) { if (obj == null) { throw new NullPointerException("T