Java中的选择排序和冒泡排序思想及代码实现
来源:互联网 发布:python 嵌套字典列表 编辑:程序博客网 时间:2024/06/18 14:42
选择排序
选择排序基本思想(假设从大到小排序):
初始化一个数组:int[] array={n个数据}
第1次排序:将索引为0的元素取出来,用该元素与之后的每一个元素做比较,比该元素小则不动,比该元素大则交换二者的数值,依次比较到最后,这样最大值就放到了索引为0的位置
第2次排序:将索引为1的元素取出来,用该元素与之后的每一个元素做比较,比该元素小则不动,比该元素大则交换二者的数值,依次比较到最后,这样数组中第二大值就放到了索引为1的位置
依次类推,将倒数第2个元素取出来,与最后一个元素做比较,比该元素小则不动,比该元素大则交换二者的位置
// 用代码实现上述思想public class SelectSort { public static void main(String[] args) { // 静态初始化一个int类型的数组 int[] array = {1,23,4,6,43}; // 第1次排序:取索引为0的元素与之后的元素做比较 for (int x = 1; x < array.length; x++) { if (array[0] < array[x]) { int temp = array[0]; array[0] = array[x]; array[x] = temp; } } System.out.println(Arrays.toString(array)); // 输出结果为:[43, 1, 4, 6, 23] // 第2次排序:取索引为1的元素与之后的元素做比较 for (int x = 2; x < array.length; x++) { if (array[1] < array[x]) { int temp = array[1]; array[1] = array[x]; array[x] = temp; } } System.out.println(Arrays.toString(array)); // 输出结果为:[43, 23, 1, 4, 6] // 第3次排序:取索引为2的元素与之后的元素做比较 for (int x = 3; x < array.length; x++) { if (array[2] < array[x]) { int temp = array[2]; array[2] = array[x]; array[x] = temp; } } System.out.println(Arrays.toString(array)); // 输出结果为:[43, 23, 6, 1, 4] // 第4次排序:取索引为3的元素与之后的元素做比较 for (int x = 4; x < array.length; x++) { if (array[3] < array[x]) { int temp = array[3]; array[3] = array[x]; array[x] = temp; } } System.out.println(Arrays.toString(array)); // 输出结果为:[43, 23, 6, 4, 1] }}
观察上面的代码,我们发现如下规律:
1、for循环内容格式一样
2、排序次数为:数组长度-1(依次取出数组前n-1个元素与之后的元素做比较,最后一个不用取出)
3、每次排序,需要进行比较的次数为:从取出索引位置后面第一个元素开始到末尾,即从i+1次开始,到array.length-1
改进后的代码
// i 控制排序次数,取值从0到array.length-2,最后一个元素不用取出 for(int i = 0 ;i<array.length-1;i++) { /* j 控制每次排序比较次数,每次比较从取出来要比较的值后面第一个元素 开始,到该数组最后一个元素比较结束,所以每次比较j从i+1开始,到 array.length-1结束*/ for(int j = i+1;j<array.length;j++) { if(array[i]<array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; count++; } } } System.out.println(Arrays.toString(array));
冒泡排序
冒泡排序基本思想(假设从大到小排序):
第一次排序:将数组中的元素从0索引开始,两两做比较,数值较小者往后放,这样最小值就到了数组末尾
第二次排序:从0索引开始,两两做比较,数值较小者往后放,一直比到倒数第二个数,这样数组中第二小的数就放到了倒数第二的位置
依次类推,最后依次比较0索引和1索引两个位置元素的大小,较小者往后放
代码实现如下:
public class BubbleSort { public static void main(String[] args){ //初始化一个数组 int[] arr = {1,23,4,6,43}; //外层for循环代表排序次数,数组长度为arr.length-1,共比较arr.length-2次; for(int i = 0;i<arr.length-1;i++) { //内层for循环代表每次排序比较的次数,每次都是从0索引开始比较; //第一次从0比到arr.length-1,比较arr.length-2-0次; //第二次从0到arr.length-2,比较arr.length-2-1次; //...... for(int j = 0;j<arr.length-1-i;j++) { if(arr[j]<arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } System.out.println(Arrays.toString(arr)); }}//输出结果为:[43, 23, 6, 4, 1]
选择排序和冒泡排序
选择排序是把每次比出来的结果往前放,冒泡排序是把每次比出来的结果往后放。
关于这两把排序方法,最主要的是掌握其思想,具体推理过程无须掌握,知道如何使用即可。
阅读全文
0 0
- Java中的选择排序和冒泡排序思想及代码实现
- 简单选择、冒泡、插入排序思想及Java实现代码
- Java中的选择排序和冒泡排序的代码
- Java中的选择排序和冒泡排序
- JAVA中的冒泡排序和选择排序
- 冒泡排序思想和实现代码
- java实现选择排序和冒泡排序
- Java 实现冒泡排序和选择排序
- Java实现选择排序和冒泡排序
- 八大经典排序算法基本思想及代码实现(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序)
- 选择排序基本思想和实现代码
- java中的基本排序之冒泡排序和选择排序
- Java中的排序方法(冒泡排序 和 选择排序)
- 选择排序,冒泡排序及二分查找的代码实现
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- 浅谈冒泡,插入,选择,快速排序等思想和代码实现
- java选择排序、冒泡排序和插入排序实现
- 阿里云上Nginx搭建端口转发域名访问
- js判断是手机端还是PC端访问
- MySQL使用mysqldump备份数据库脚本手工执行成功 crontab定时却失败的解决方法
- Java IO详解
- Curator典型使用场景之分布式计数器。
- Java中的选择排序和冒泡排序思想及代码实现
- 同余式和裴蜀定理
- HEX-80文件格式
- 20170918_chr_newlogin Struts2实现登陆功能(简单validate验证)
- 多线线程资源共享
- 联网请求统一加上header
- css 常用技巧
- 清晰度、分辨率和锐度的关系
- HashSet集合hashcode和equals的影响