Java学习资料-Java常用算法-选择排序算法

ChooseSort源程序
public class ChooseSort {
 private static void ChooseSort (int [] a){
  for(int i = 0; i < a.length; i++){
   //对数组循环,假设数据排在前面的元素总比后面的小,然后与后面的数据进行比较
   int k = i;
   for(int j = i+1; j <a.length; j++){//对数据遍历,寻找最小的数据元素的数组下标
    if(a[j]<a[k])
     k = j;
   }
   //最少值与a[i]交换
   if(i != k){
   //对i和k进行比较,如果不相等,则i和j下标表示的元素不是同一个元素,则交换a[i],a[k]的值,保证最小值总在最前面
    int temp = a[i];
    a[i] = a[k];
    a[k] = temp;
   }
  }
  
 }

public static void main(String[] args) {
  int[] test1 = { 51, 38, 49, 27, 62, 5, 16  }; // 测试数组
  chooseSort(test1);

for (int i = 0; i < test1.length; i++) {
   System.out.print(test1[i] + " ");
  }
 }
}
3.4.1.2  程序运行结果:
5 16 27 38 49 51 62
3.4.2 源程序揭秘
选择排序的基本思想是每一趟(假设是第i趟)处理都是从n-i+1个数据中选择一个数据最小(或最大)的作为有序序列中的第i个数据。其中最简单的一种称为直接选择排序。
选择排序算法的数据结构:
待排序的数组test1 = {51, 38, 49, 27, 62, 5, 16}
选择排序算法原理:
? 直接选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n-1个数据中选择一个第二小的元素作为有序序列中的第2个元素并将它定位在第二号存储位置,依此类推,当第n-1趟处理从数据序列的剩下的2个元素中选择一个较小的元素作为有序序列中的最后第2个元素并将它定位在倒数第二号存储位置,至此,整个的排序处理过程就已完成。

时间: 2024-10-23 22:33:08

Java学习资料-Java常用算法-选择排序算法的相关文章

Java学习资料-Java常用算法-直接插入算法

SortAscending源程序public class SortAscending { public SortAscending () {  System.out.println("直接插入排序法"); } public static int[] sortAscending(int[] with) { // 直接插入法递增排序  int length = with.length;      // 待排数组的长度  int[] temp = new int[length];    //

Java学习资料-Java异常处理

4.Java异常处理 4.1 Java异常概念 Java异常是Java提供的用于处理程序中错误的一种机制. 所谓错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在). 设计良好的程序应该在异常发生时提供处理这些错位的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果. Java程序的执行过程中如出现异常事件,可以生成一个异常类,该异常类封装了异常事件的信息并将被提交给Java运行时的系统,这个过程称为抛出(throw)异常. 当Java运行时系统

Java学习资料-Java常用算法-堆排序

/** * 堆排序 * * @param array * @param length */ public void heapSort(int[] array, int length) { // 调整为大根堆的形式 // 存储根堆的元素个数 int currentSize = length; int start = (currentSize - 2) >>> 1; while (start >= 0) { siftDown(array, start, currentSize - 1)

Java学习资料-Java常用算法-二分查找算法

binarySearch源程序 public class binarySearch { public static int binarySearch(int[] dataset ,int data) { int beginIndex = 0; //定义起始位置 int endIndex = dataset.length - 1;  //定义结束位置 int midIndex = -1; //定义中点 if(data <dataset[beginIndex]||data>dataset[endI

Java学习资料-Java多线程

java多线程总结:http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html Java Thread.join()详解:http://www.open-open.com/lib/view/open1371741636171.html

Java学习资料-Java开发中JDBC连接数据库代码和步骤

完整java开发中JDBC连接数据库代码和步骤:http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html

Java学习资料-java基本数据类型

数据类型            大小       范围                                             默认值 byte(字节)     8         -128 - 127                                           0shot(短整型)        16      -32768 - 32768                                         0int(整型)        

基于Java实现的选择排序算法

选择排序和冒泡排序同样是基础排序算法,现在也做个学习积累. 简述 选择排序算法较为稳定,基本上都是O(n2)的时间复杂度,规模越小排序越快,不需要占用额外空间.其实选择排序原理很简单,就是在未排序序列中找到最小(大)的元素然后放到数组前面,然后再从剩下的未排序序列中找到最小(大)的元素放在上一次找到最小(大)元素的后面,以此类推完成排序. 动图演示 看下动图上的演示,就能够找出排序规律,非常之简明易懂. (算法动图来源于参考资料,详细请往下翻阅) 代码实现 1 /** 2 * 选择排序 3 *

必须知道的八大种排序算法【java实现】(二) 选择排序,插入排序,希尔算法【详解】

一.选择排序 1.基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实例 3.算法实现 /** * 选择排序算法 * 在未排序序列中找到最小元素,存放到排序序列的起始位置 * 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾. * 以此类推,直到所有元素均排序完毕. * @param numbers */ public static void selectSort(in