1.17 选择排序法
假设当前存在一个 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 选择排序法相关推荐
- 面试官:你都工作3年了,连选择排序法都不会,我怎么能选择你
面试时,算法经常会遇到,特别是一些常见的算法. 张工毕业3年了,一直在一家创业公司做python开发,最近到某知名互联网公司面试,做了笔试题后,面试官看了觉得还不错,于是想进一步考察张工的编码能力,就 ...
- 求水仙花数 以及 最大公约数最小公倍数 以及 冒泡法 以及字母大小写的转换 以及简单选择排序法 以及斐波那契数列
什么是水仙花数呢? 假设一个数ABC是一个三位数. 水仙花数就是 A*A*A +B*B*B +C*C*C = ABC; 水仙花的具体代码. 接着是最大公约数以及最小公倍数 如果两个数是ab,最大公约数 ...
- 数据结构 - 简单选择排序法
数据结构 - 简单选择排序法 在之前的博文里已经介绍过排序的两个基本方法: 双重循环法和冒泡排序法. 基本思想 其实上面两种方法的基本思想都是一样的: 就是将排序步骤分成两层循环, 在内层的每1个循环 ...
- Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序.改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换 题目 题目描述 破题 代码 运行 ...
- 选择排序法对数组进行排序
package selectionSort;import java.util.Arrays;public class Exam { //使用选择排序法对数组进行排序public static void ...
- C——用冒泡排序法、选择排序法对随机输入的10个整数从小到大排序
//冒泡排序法 #include <stdio.h> int main() {int i,j,t,a[10];for(i=0;i<10;i++){scanf("%d&quo ...
- 指针选择排序法,10个整数从小到大排序
//指针方法,选择排序法对10个int按从小到大排列 #include<stdio.h> main() {int n=10,i,b,a[10],*p;int sort(int *q,int ...
- java实现数组排序代码_Java使用选择排序法对数组排序实现代码
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setTex ...
- 编写一个C程序,实现以下功能:定义一个学生结构体Student(含学号、姓名、年龄、身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序。在主函数中
编写一个C程序,实现以下功能: 定义一个学生结构体Student(含学号.姓名.年龄.身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序.在主函数中 ...
最新文章
- 从源码搭建PCL1.7.2+vs2015+win10
- C#静态构造函数总结
- 泰国能源部携手本土企业打造智慧城市
- aqlserver实用程序_sqlserver命令提示实用工具的介绍
- Atcoder ARC101 E 树dp
- python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成
- LeetCode MySQL 1179. 重新格式化部门表
- [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件
- SpringBoot-动力节点-王鹤
- k阶原点距和k阶中心距各是说明什么数字特征
- 程序员面试金典——4.3高度最小的BST
- 机器学习 之 LBP特征
- oracle 11.2.0.3.0 client下载,oracle64位客户端 Instant Client
- Win10“桌面”移至D盘
- 一个“蝇量级” C 语言协程库 -- Protothreads
- 【IoT毕业设计】树莓派开发板+机智云IoT+监测机器人
- MATLAB使用符号工具箱计算函数的5阶麦克劳林多项式的四种方法(附指定阶数、指定点的泰勒展开)
- 四种激光雷达技术的最新发展趋势
- turtle设置背景图片
- 【java集合】ConcurrentHashMap源码分析