冒泡算法和选择排序
来源:互联网 发布:c语言线程睡眠 编辑:程序博客网 时间:2024/05/29 12:32
冒泡算法和选择排序
1. 冒泡排序
冒泡排序:即比较相邻的两个数,如果前面的数大于后面的数,那么他们就调换位置,让大的数位与后面,然后继续与其相邻的数作比较,从第一对数一直比较到最后一对数,所以最后面的数应该是最大的数,然后在针对出最后一个数以外的所有数重复以上步骤,之后持续每次比上一次少掉最后一个数的其他数重复比较的步骤,直到没有任何一对数字做比较
这里附上代码说明:
package com.edu_03;public class ArraySortDemo { public static void main(String[] args) { //使用冒泡排序给数组int[] arr = { 24, 69, 80, 57, 13 };进行排序 //创建一个数组 int[] arr = { 24, 69, 80, 57, 13 };/* //第一次排序 for (int i = 0; i < arr.length - 1 - 0; i++) { //java.lang.ArrayIndexOutOfBoundsException //-1是为了防止数组越界,-0是为了提高比较的效率 if (arr[i]>arr[i+1]) { //找一个中间变量 int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } //打印数组 printArr(arr); //第二次排序 for (int i = 0; i < arr.length - 1 - 1; i++) { //java.lang.ArrayIndexOutOfBoundsException if (arr[i]>arr[i+1]) { //找一个中间变量 int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } //打印数组 printArr(arr); //第三次排序 for (int i = 0; i < arr.length - 1 - 2; i++) { //java.lang.ArrayIndexOutOfBoundsException if (arr[i]>arr[i+1]) { //找一个中间变量 int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } //打印数组 printArr(arr); //第四次排序 for (int i = 0; i < arr.length - 1 - 3 ; i++) { //java.lang.ArrayIndexOutOfBoundsException if (arr[i]>arr[i+1]) { //找一个中间变量 int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } //打印数组 printArr(arr);*/ System.out.println("--------------------"); //使用for循环改进上面的代码 for (int j = 0; j < arr.length-1; j++) {//外层循环控制比较的次数 for (int i = 0; i < arr.length - 1 - j ; i++) { //-1是为了防止数组越界,-j是为了提高比较的效率 if (arr[i]>arr[i+1]) { //找一个中间变量 int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } } printArr(arr); } //写一个方法打印数组 public static void printArr(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); }}
这里画图做下解释
选择排序
- 选择排序:即拿出第一个数依次与处于他后面的数两两比较,选出较小的数放在前边,最总最小的数位于数组的最前端;然后依次对其他数进行上述操作,直到没有任何一对数字做比较。
这里是一段代码说明:
package com.edu_03;public class ArraySortDemo2 { public static void main(String[] args) { //使用选择排序对数组进行排序:int[] arr = { 24, 69, 80, 57, 13 }; int[] arr = { 24, 69, 80, 57, 13 };/* //第一次比较 int x = 0; for (int i = x+1; i < arr.length; i++) { if (arr[x]>arr[i]) { int temp = arr[x]; arr[x] = arr[i]; arr[i] = temp; } } printArr(arr); //第二次比较 x = 1; for (int i = x+1; i < arr.length; i++) { if (arr[x]>arr[i]) { int temp = arr[x]; arr[x] = arr[i]; arr[i] = temp; } } printArr(arr); //第三次比较 x = 2; for (int i = x+1; i < arr.length; i++) { if (arr[x]>arr[i]) { int temp = arr[x]; arr[x] = arr[i]; arr[i] = temp; } } printArr(arr); //第四次比较 x = 3; for (int i = x+1; i < arr.length; i++) { if (arr[x]>arr[i]) { int temp = arr[x]; arr[x] = arr[i]; arr[i] = temp; } } printArr(arr);*/ System.out.println("--------------------------"); //使用for循环改进上面的代码 for (int j = 0; j < arr.length-1; j++) { for (int i = j+1; i < arr.length; i++) { if (arr[j]>arr[i]) { int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } printArr(arr); } //写一个方法打印数组 public static void printArr(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); }}
这里画图解释一下
0 0
- 冒泡算法和选择排序
- 冒泡算法和选择排序
- 冒泡排序算法和选择排序算法
- 经典算法:冒泡排序和选择排序
- Python算法 冒泡排序和选择排序
- 算法:冒泡排序和选择排序
- 【算法】选择排序和冒泡排序
- 冒泡排序和选择排序算法
- 排序算法:冒泡和选择排序
- 算法:选择和冒泡排序法
- 八大排序算法之---冒泡和选择
- 冒泡和选择排序的递归算法
- 【算法初级】排序--“冒泡”和“选择”对比
- (三)算法--排序算法选择排序和冒泡排序
- 数组的选择排序算法和冒泡排序算法
- Java学习笔记:冒泡排序算法和选择排序算法
- 八大排序算法(1)_冒泡排序和选择排序
- 排序算法之冒泡排序和选择排序
- 什么是时间复杂度,什么是P问题、NP问题和NPC问题
- linux命令详解之cd命令
- 单例设计模式
- 第十二单元练习
- 51单片机按键检测和信号函数仿真
- 冒泡算法和选择排序
- bzoj2440 [中山市选2011]完全平方数 反演容斥+二分
- ThoughtWorks 2016读书雷达
- R 双纵坐标
- 二叉树的前序遍历
- html+css面试题
- VS下QT工程不能生成moc文件的解决方法
- 九度OJ题目1440:Goldbach's Conjecture
- 流氓DHCP服务器内网攻击测试