`

直接选择排序基本思想

阅读更多

基本思想  

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

排序过程  【示例】:

  初始关键字 [49 38 65 97 76 13 27 49]

  第一趟排序后 13 [38 65 97 76 49 27 49]

  第二趟排序后 13 27 [65 97 76 49 38 49]

  第三趟排序后 13 27 38 [97 76 49 65 49]

  第四趟排序后 13 27 38 49 [76 97 65 49 ]

  第五趟排序后 13 27 38 49 49 [97 65 76]

  第六趟排序后 13 27 38 49 49 65 [97 76]

  第七趟排序后 13 27 38 49 49 65 76 [97]

  最后排序结果 13 27 38 49 49 65 76 97

JAVA核心算法:

 

// 选择排序(从小到大)
public static void selectSort(int[] arr){
   //进行交换数据时用到的变量
   int temp = 0 ;
   //外层循环的作用是控制排序的趟数
   for(int i=0;i<arr.length;i++){
    //首选认为数组中的第一个数是最大的数
    int max = arr[i] ;
    //记录最大数的下标,用于能快速的找到其位置
    int maxIndex = i ;
    //内层循环用于找出最大(或最小)的数的位置
    for(int j=i;j<arr.length;j++){
     if(max>arr[j]){
      max = arr[j] ;
      maxIndex = j ;
     }
    }
    //退出内层循环后,说明已经找到最大(或最小)的数的下标,把找到的数与数组的第一个(相应)位置的数交换
    temp = arr[i] ;
    arr[i] = max ;
    arr[maxIndex] = temp ;
   }
   //输出排序结果
   for(int i=0;i<arr.length;i++){
    System.out.print(arr[i] + " ") ;
   }
}
 
分享到:
评论

相关推荐

    希尔排序基本思想

    希尔排序的核心思想是“增量序列”(或称为“间隔序列”),它决定了元素如何被分组。经典的增量序列是序列的一半,即每次将间隔减半,但这不是唯一的选择。希尔排序的性能与选择的增量序列有很大关系,最优的增量...

    直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码

    直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...

    直接选择排序代码

    直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取...

    直接选择排序、希尔排序(数据结构)

    它的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 1. **...

    Java的8大排序的基本思想及实例解读

    ### Java的八大排序基本思想及实例解读 #### 一、直接插入排序 **基本思想**: 直接插入排序的核心思想是在已排序序列的基础上逐步构建更大的已排序序列。具体来说,假设数组中的前`n-1`个元素已经按照升序排列好...

    直接插入排序 、冒泡排序、简单选择排序

    直接插入排序是一种简单的排序算法,它的基本思想是将待排序的序列分成两个部分,一部分是已经排好序的序列,另一部分是尚未排好序的序列。在每次循环中,我们从尚未排好序的序列中取出一个元素,并将其插入到已经排...

    C#控制台应用程序直接选择排序

    直接选择排序的基本思想: n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空。 ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与...

    常见经典排序算法(C语言)1希尔排序 二分插入法 直接插入法 带哨兵的直接排序法 冒泡排序 选择排序 快速排序 堆排序.docx

    常见的经典排序算法有希尔排序、二分插入法、直接插入法、带哨兵的直接排序法、冒泡排序、选择排序、快速排序、堆排序等。 一、希尔排序(Shell 排序法) 希尔排序法,又称宿小增量排序,是 1959 年由 D.L.Shell ...

    冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip

    直接插入排序(Straight Insertion Sort)是一种简单且古老的排序算法,其基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。12 直接插入排序的算法过程如下: 假设待排序...

    快速排序基本思想+排序过程

    快速排序是一种高效的排序算法,其基本思想源自分治策略,可以视为是对冒泡排序的一种优化。本篇文章将详细解析快速排序的基本思想、排序过程以及其实现细节。 ### 基本思想 快速排序的核心思想是分治法。通过选择...

    插入排序基本思想.pdf

    "插入排序基本思想" 插入排序是最简单的一种排序算法,它的基本思想是每次将一个待排序的记录,按其关键字的大小插入到前面已经排好序的子文件的适当位置,直到全部的记录插入完成为止。 直接插入排序是插入排序的...

    直接插入排序,冒泡排序,直接选择排序.zip

    直接插入排序(Straight Insertion Sort)是一种简单且古老的排序算法,其基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。12 直接插入排序的算法过程如下: 假设待排序...

    直接插入和选择排序算法

    它的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 #### ...

    冒泡排序和选择排序_C语言_冒泡排序_选择排序_

    总的来说,冒泡排序和选择排序都是基础且实用的排序算法,尽管它们的时间复杂度为O(n^2),在处理大量数据时效率较低,但对于理解排序算法的基本思想和C语言中的指针操作具有重要意义。在实际开发中,更高效的排序...

    直接插入排序法、冒泡排序法、直接选择排序法算法

    最后是直接选择排序(Simple Selection Sort),它的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾...

    排序技术,整合各种排序算法思想

    堆排序是一种树形选择排序,它的基本思想是利用完全二叉树的特性来实现排序。首先构造一个大顶堆或小顶堆,然后将堆顶元素与最后一个元素交换,此时最后一个元素就是最大或最小值。接着对剩余的元素重新调整为堆,...

    基于Java语言实现的直接选择排序算法.pdf

    文章首先介绍了排序的基本概念和分类,然后详细介绍了直接选择排序算法的基本思想和实现过程。 1. 排序的基本概念 排序是指将一组记录按照其键值的大小顺序排列起来的操作。排序算法可以分为内排序算法和外排序...

    基本排序法的实现及测试

    本项目涵盖了五种基本的排序算法:快速排序、插入排序、选择排序、堆排序和归并排序,并提供了测试用例来验证这些算法的正确性。 **快速排序**(Quick Sort): 快速排序是一种高效的排序算法,由C.A.R. Hoare在...

    选择排序 选择排序示例

    它的基本思想是:在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 ####...

    常用排序比较(直接插入,选择,堆排序,冒泡)

    **基本思想**:直接插入排序的基本思想是将一个记录插入到已排序好的有序表中,从而得到一个新的、记录增1的有序表。初始时,认为第一个元素已经有序;从第二个元素开始,该元素可以和其前边的任一元素比较,找到...

Global site tag (gtag.js) - Google Analytics