您的位置:首页 > 编程语言 > Java开发

java学习-算法1--冒泡排序

2014-07-17 18:02 246 查看
今天突然对算法产生了兴趣,打算写一系列的文章,学习一些基本的算法,会写出算法的原理,及java实现,废话不多说,开始正文:

冒泡算法:

原理:

   1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。

   2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该是最大数。

   3)针对所有的元素重复以上的操作,除了最后一个。

   4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

java代码:该代码直接可以运行:

package com.algorithm;

/**

 * 冒泡排序

 * @author hadoop

 *

 */

public class BubbleSort {
public static void main(String[] args) {
int array[] = {2,1,22,323,232,12,3344,44};
int arr[] = {2,1,12,22,44,3344,232,323};
sort1(arr);

}

/**
* 冒泡排序算法
* @param array
*/
public static void sort(Integer array[]){
int tem = 0;
for(int j=1;j<array.length;j++){//循环数组

for(int i=0;i<array.length-j;i++){//从第一个对比到倒数第j个 
//if(array[i]<array[i+1]){//降序
if(array[i]>array[i+1]){//升序
tem = array[i];
//i 和 i+1互换
array[i] = array[i+1];
array[i+1] = tem;
}
}
}
for(Integer arr:array){
System.out.println(arr);
}
}

/**
* 冒泡排序2
* 优化版排序
* @param array
*/
public static void sort1(int array[]){
int tem = 0;
boolean isContinue = true;//是否继续循环
int count = 0;
for(int i=array.length-1;i>0&&isContinue;i--){
isContinue = false;
for(int j=0;j<i;j++){
//如果没有进入到下述条件,则证明顺序是对的,排序结束,如果进入,对续继排序
if(array[j]>array[j+1]){
tem = array[j];
array[j] = array[j+1];
array[j+1] = tem;
isContinue = true;
}
count++;
}
}
for(int arr:array){
System.out.print(arr + ",");
}
System.out.println("循环次数============"+count);
}

/**
* 乘法表
*/
public static void multiplicationTable(){
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
String r = j*i+"";
if(j*i<10){
r = j*i+" ";
}
System.out.print(j+"*"+i+"="+r + " ");
if(j==i){
System.out.println("\n");
}
}
}
}

/**
* 阶乘算法
* 阶乘  4! = 1*2*3*4 = 24
*/
public static void NumAssemble(){
int base = 4;
int result = 1;
for(int i=1;i<=base;i++){
result = result*i;
}
System.out.println(result);
}

/**

*/

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐