重新理清冒泡排序

来源:互联网 发布:淘宝网买卖中心 编辑:程序博客网 时间:2024/05/22 08:11

任何一句自然语言都可以通过java代码来实现,原理很简单。


1.一(段)句话是一个需求(需求分析)

2.java是面向对象的

3.通过面向对象可以挖掘一句话中包含的对象和动作(概要设计)

4.用java表达对象,动作间的相互关系(编码)

5.运行(回归测试)

6.部署运行(正式上线,解决问题)

---------------------------------------------------------------------

以前我也写过冒泡排序,但是貌似不是真正的冒泡排序。

第一,冒泡排序是从前比较到后,你从后比较到前虽然结果一样,但是不是冒泡排序的逻辑。

第二,冒泡排序是把最大的数放在最后,你把最大的数放在前面结果一样可以排,但那也不是真正的冒泡。


今天重新梳理了冒泡排序,代码如下,按照原理去写代码,才是真正的实现需求。


---------------------------------------------------------------------

package com.tonking.test;


public class TopPop {


/**
* 真的的冒泡排序
* @author  chendongj
* @time    2015-12-23
*/
public static void main(String[] args) {
int  []a   = {3,43,5,57,6,7,9,8,65,4,32,13,45,67,544};  //乱序的数组

/*
* 分析:冒泡排序是从前面开始两两比较,把最大的放在最后面
* 1.数组一开始长度为a.lentth,一次循环冒泡一个,数组长度减1;
* 由此得最外层循环for(int i = a.length-1; i > 0; --i)才是标准写法,
* 其中a.length-1为数组最大下标。
* 2.数组从开始进行两两比较,第一次比较到数组最大长度,随后冒泡出一个,比较的位数减一
* 由此内层循环的标准写法为:for (int j = 0; j < i; ++j)
* 其中i为外层循环的需要比较数组的最大下标。 
*/
int   temp  = 0; //临时变量
for (int i = a.length-1; i > 0; --i) {
for (int j = 0; j < i; ++j) {
if(a[j]>a[j+1]){//比较交换
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
System.out.println("冒泡排序后的数组:");
for (int i = 0; i < a.length; i++) { //输出排序后的数组
System.out.print(a[i]+",");
}
}


}

0 0