复习:冒泡排序法
来源:互联网 发布:java转换json字符串 编辑:程序博客网 时间:2024/05/08 16:24
学C++一年都开始学Java了,才发现学过的好多C++知识都给忘了。今天必须复习冒泡排序法。
例题:编写程序,用冒泡法(又称)气泡法对十个数升序排序。
先看一下忘记冒泡法排序的程序是怎么写的:
import java.util.Scanner;//import java.text.DecimalFormat;public class paixu {public static void main(String[] args) {Scanner input = new Scanner(System.in);int i,t;int num[]=new int[10];for(i=0;i<10;i++)num[i]=input.nextInt();input.close();for(i=0;i<9;i++){if(num[i]>num[i+1]){t=num[i];num[i]=num[i+1];num[i+1]=t;}}for(i=0;i<9;i++){System.out.print(num[i]+" ");}System.out.print(num[9]);}}这样写的输出结果是:
可以看到,最大的数9经过一轮比较,已经“沉”到底部。
通过这个错误程序可以理解冒泡排序的思想。(唉,真是存在即真理啊,犯错并不是什么坏事。)
在此基础上,再添加一个外部循环,用变量 j ( 从 j=1 开始 )控制。第二轮(j=2)循环还剩中间8个数,即从第一个元素8(元素下标 i=1)开始,跟余下的7 6 5 4 3 2 1 0 进行8次比较,即(n-j)次比较。
以此类推,每一次循环要进行(n-j)次比较,实现对所有数的升序排序时,共循环了n-1次。
所以正确的代码是:
import java.util.Scanner;//import java.text.DecimalFormat;public class Main{public static void main(String[] args) {Scanner input = new Scanner(System.in);int i, j, t;int num[] = new int[10];for (i = 0; i < 10; i++)num[i] = input.nextInt();input.close();for (j = 1; j < 10; j++) {//循环9次for (i = 0; i < 10 - j; i++) {//每一次循环比较10-j次if (num[i] > num[i + 1]) {t = num[i];num[i] = num[i + 1];num[i + 1] = t;}}}for (i = 0; i < 9; i++) {System.out.print(num[i] + " ");}System.out.print(num[9]);}}Ps:写 j、i 的时候一定要注意别写错了
0 0
- 复习--冒泡排序法
- 复习:冒泡排序法
- 复习排序-冒泡排序
- C++复习九 冒泡排序法
- 复习之冒泡排序
- 算法复习--冒泡排序
- 复习一下冒泡排序
- 算法复习--冒泡排序
- 冒泡排序复习
- 复习 冒泡,快速 排序
- 今天复习冒泡排序
- 复习之路 冒泡排序
- 黑马程序员-冒泡排序复习
- 算法复习之冒泡排序
- 算法复习之冒泡排序
- 黑马程序员关于数组、冒泡排序法的复习笔记
- <算法复习>排序之一---冒泡排序
- 冒泡法 复习
- Visual Studio 常用快捷键
- VirtualBox 安装android-x86-4.4 网络配置
- 规律总结while(--t)与while(t--)
- QTCreater编程错误:LNK2019: 无法解析的外部符号 __imp__ShellExecuteW@24,该符号在函数 _main 中被引用 的 错误处理 及 添加外部库与头文件 的方法
- ADT、C和Java
- 复习:冒泡排序法
- hdu 4803 贪心/思维题
- JQUERY弹出框
- 拓扑排序推荐博客
- 如何成为人上人?
- cin 和 getline()
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- 8-类的静态成员函数
- poj2446