选择排序的基本思想是,每一趟在n-i(i=0....,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。
更加具体的描述如下:
假设有5个待排元素需要升序排列:
第一趟排序,把5个元素中最小的元素拿出来,并把它放在第一个位置上,此时第一个元素的位置已经排好,不需要再排列
第二趟排序,把除掉第一个元素的其它四个元素的最小值求出,并把它放在第二个位置上
。。。。。
直到最后一次为止
选择排序算法的优点
相对于冒泡算法,选择算法减少了交换的次数,由n(n-1)/2到n-1次,但是元素之间的比较次数并没有改变: n(n-1)/2
Java实例如下:
package algorithm.selectsort;
public class SelectSortSample {
public static void main(String[] args) {
int[] des = {1,39,76,453,245,48,58,23,98,34,6983,57868};
//升序排列
for (int i = 0; i < des.length-1; i++) {
int minPos = i;
for (int j = i; j < des.length; j++) {
if(des[minPos]>des[j]){
minPos = j;
}
}
int tmp = des[i];
des[i] = des[minPos];
des[minPos] =tmp;
}
for (int i = 0; i < des.length; i++) {
System.out.println(des[i]);
}
}
}
分享到:
相关推荐
- 插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常整理扑克牌的过程。初始时,数组可以看作是未排序序列,已排序序列为空。每次从未排序序列中取出一个元素,找到它在已排序序列中的合适位置并将其...
- 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。...
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
选择排序是一种简单直观的排序算法。它的基本思想是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。...
选择排序是一种简单直观的比较排序算法,它的工作原理是遍历待排序的数据元素,依次找到最小(或最大)的元素,放到序列的起始位置,直到全部待排序的数据元素排完。 #### 二、程序代码分析 ##### 2.1 主函数 `...
《数据结构-选择排序-C.ppt》文档详细介绍了选择排序这一内部排序方法,包括它的基本思想、算法描述以及算法分析。选择排序的核心在于通过一系列的比较找到数组中最小(或最大)的元素,并将其放到正确的位置,从而...
选择排序是一种简单的排序算法,它的基本思想是在未排序的序列中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)的元素,然后放到已排序序列的末尾。...
| 简单选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 稳定 | | 直接插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 | | 希尔排序 | O(nlogn)~O(n^2) | O(n^1.3) | O(n^2) | O(1) | 不稳定 | | 堆排序 | O(nlogn)...
选择排序是一种简单的排序算法,其基本思想是每次从未排序的元素中找出最小(或最大)的元素,将其放置到已排序序列的末尾。时间复杂度为O(n^2),虽然简单易懂,但在处理大数据量时效率较低。 **2. 冒泡排序(Bubble...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
**选择排序**是一种简单直观的排序算法,它的基本思想是通过n次比较找到未排序序列中的最小(或最大)元素,然后将其放到已排序序列的末尾。这个过程重复n-1次,直到所有元素均排序完毕。选择排序的时间复杂度是O(n...
提供的压缩包文件“算法-理论基础- 排序- 直接选择排序(包含源程序).pdf”可能包含更详细的解释、示例代码以及可能的性能分析。通过阅读这份文档,你可以深入理解直接选择排序的工作机制,学习如何编写对应的源...
常见的选择排序方法有简单选择排序。 交换排序是基于比较的排序方法,它通过比较待排序序列中的元素,并在发现逆序时交换它们的位置以达到排序的目的。冒泡排序和快速排序是两种常用的交换排序算法。冒泡排序通过...
详解Java常用排序算法-选择排序 选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择...
2. 选择排序(Selection Sort):选择排序每次找到当前未排序部分的最小(或最大)元素,然后将其放到已排序部分的末尾。同样,其时间复杂度为O(n^2)。 3. 插入排序(Insertion Sort):插入排序将元素逐个插入到已...
本资源提供的“常用的内部排序---源码”包含了C语言实现的一些经典排序算法,这对于学习和理解这些算法的工作原理非常有帮助。 1. **冒泡排序**:冒泡排序是最简单的排序算法之一,通过不断交换相邻的错误位置元素...
在这个"算法练习-选择排序"的少儿编程项目中,我们将深入学习和探讨选择排序这一经典算法,并通过Scratch游戏案例进行实践。 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中找到最小(或最大)...
**选择排序**是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法,因为它可能会...
- **选择排序**:每次遍历数组找到最小或最大的元素,将其与数组开头或末尾的元素交换。 - **插入排序**:将元素插入到已排序部分的适当位置,保持已排序部分的有序性。 - **快速排序**:使用分治策略,通过一个...
冒泡排序是一种简单的排序算法,通过重复遍历待排序的序列,依次比较相邻元素,如果顺序错误则交换,直到遍历完整序列且无交换发生,表明序列已排序完成。其核心思想是每次比较都可能把最大的元素“浮”到序列的末尾...