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

今天突然对算法产生了兴趣,打算写一系列的文章,学习一些基本的算法,会写出算法的原理,及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);
}

/**

*/
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值