假设当前存在一个 int 类型的数组 number,该数组中的元素依次是 13、15、 24、99、4 和 1。如果使用冒泡排序进行两两相邻比较,第一趟排序后的结果如下:

13、15、24、4、1、99

第二趟排序后的结果如下:

13、15、4、1、24、99

第三趟排序后的结果如下:

13、4、1、15、24、99

第四趟排序后的结果如下:

4、1、13、15、24、99

第五趟排序后的结果如下:

1、4、13、15、24、99

使用选择排序法也可以对上述数组中的元素进行排序,但是它与冒泡排序不同。选择排序是指每一趟从待排序的数据元素中选出最大(或最小)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。例如,使用选择排序法重新对 number 数组中的元素进行排序,那么第一趟排序后的结果如下:

13、15、24、1、4、99

第二趟排序后的结果如下:

13、15、4、1、24、99

第三趟排序后的结果如下:

13、1、4、15、24、99

第四趟排序后的结果如下:

4、1、13、15、24、99

第五趟排序后的结果如下:

1、4、13、15、24、99

例 1
利用选择排序方法通过编程的方式实现对 number 数组的排序,并输出已排序的数组元素。代码如下:

int[] number = {13,15,24,99,4,1};
String end = "\n";
int index;
for (int i = 1;i < number.length;i++) {index = 0;for(int j = 1;j <= number.length-i;j++) {if (number[j] > number[index]) {index = j;    // 查找最大值}}end = number[index] + " " + end;    // 定位已排好的数组元素int temp = number[number.length-i];number[number.length-1] = number[index];number[index] = temp;System.out.print("【");for (int j = 0;j < number.length-i;j++) {System.out.print(number[j]+" ");}System.out.print("】"+end);
}

执行上述代码,查看每一趟排序后的结果,运行结果如下所示。

【13 15 24 1 4 】99 【13 15 4 1 】24 99 【13 1 4 】15 24 99 【4 1 】13 15 24
99 【1 】4 13 15 24 99

1.17 选择排序法相关推荐

  1. 面试官:你都工作3年了,连选择排序法都不会,我怎么能选择你

    面试时,算法经常会遇到,特别是一些常见的算法. 张工毕业3年了,一直在一家创业公司做python开发,最近到某知名互联网公司面试,做了笔试题后,面试官看了觉得还不错,于是想进一步考察张工的编码能力,就 ...

  2. 求水仙花数 以及 最大公约数最小公倍数 以及 冒泡法 以及字母大小写的转换 以及简单选择排序法 以及斐波那契数列

    什么是水仙花数呢? 假设一个数ABC是一个三位数. 水仙花数就是 A*A*A +B*B*B +C*C*C = ABC; 水仙花的具体代码. 接着是最大公约数以及最小公倍数 如果两个数是ab,最大公约数 ...

  3. 数据结构 - 简单选择排序法

    数据结构 - 简单选择排序法 在之前的博文里已经介绍过排序的两个基本方法: 双重循环法和冒泡排序法. 基本思想 其实上面两种方法的基本思想都是一样的: 就是将排序步骤分成两层循环, 在内层的每1个循环 ...

  4. Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换

    7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序.改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换 题目 题目描述 破题 代码 运行 ...

  5. 选择排序法对数组进行排序

    package selectionSort;import java.util.Arrays;public class Exam { //使用选择排序法对数组进行排序public static void ...

  6. C——用冒泡排序法、选择排序法对随机输入的10个整数从小到大排序

    //冒泡排序法 #include <stdio.h> int main() {int i,j,t,a[10];for(i=0;i<10;i++){scanf("%d&quo ...

  7. 指针选择排序法,10个整数从小到大排序

    //指针方法,选择排序法对10个int按从小到大排列 #include<stdio.h> main() {int n=10,i,b,a[10],*p;int sort(int *q,int ...

  8. java实现数组排序代码_Java使用选择排序法对数组排序实现代码

    编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setTex ...

  9. 编写一个C程序,实现以下功能:定义一个学生结构体Student(含学号、姓名、年龄、身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序。在主函数中

    编写一个C程序,实现以下功能: 定义一个学生结构体Student(含学号.姓名.年龄.身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序.在主函数中 ...

最新文章

  1. 从源码搭建PCL1.7.2+vs2015+win10
  2. C#静态构造函数总结
  3. 泰国能源部携手本土企业打造智慧城市
  4. aqlserver实用程序_sqlserver命令提示实用工具的介绍
  5. Atcoder ARC101 E 树dp
  6. python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成
  7. LeetCode MySQL 1179. 重新格式化部门表
  8. [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件
  9. SpringBoot-动力节点-王鹤
  10. k阶原点距和k阶中心距各是说明什么数字特征
  11. 程序员面试金典——4.3高度最小的BST
  12. 机器学习 之 LBP特征
  13. oracle 11.2.0.3.0 client下载,oracle64位客户端 Instant Client
  14. Win10“桌面”移至D盘
  15. 一个“蝇量级” C 语言协程库 -- Protothreads
  16. 【IoT毕业设计】树莓派开发板+机智云IoT+监测机器人
  17. MATLAB使用符号工具箱计算函数的5阶麦克劳林多项式的四种方法(附指定阶数、指定点的泰勒展开)
  18. 四种激光雷达技术的最新发展趋势
  19. turtle设置背景图片
  20. 【java集合】ConcurrentHashMap源码分析

热门文章

  1. 探秘Java中String、StringBuilder以及StringBuffer
  2. Oracle数据库分组排序
  3. c++ union内存
  4. jdk7 for Mac
  5. 【Leafletjs】4.L.Map 中文API
  6. Reflector 试用过期后重置试用
  7. Excel 操作收藏
  8. 设计模式研究(二)-Singleton
  9. STM32PB2(BOOT1)使用注意
  10. paho mqtt client调试记录