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);
}
/**
*
*/
}
冒泡算法:
原理:
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);
}
/**
*
*/
}
相关文章推荐
- java基础学习记录之数组冒泡排序的学习与练习三
- 【算法学习笔记】03.白书练习题stat(排序入门:冒泡,桶)
- 面试前的准备(java专业 ~学习算法排序以及查找)
- Java算法之排序(快速,冒泡,归并,选择)
- 算法积累_java_插入,选择,冒泡,快速排序
- 一步步学习数据结构和算法之直接插入排序效率分析及java实现
- 我的Java开发学习之旅------>Java经典排序算法之快速排序
- Java学习日记 求最值 排序 选择 冒泡 交换
- 【算法拾遗(java描述)】--- 交换排序(冒泡、快排)
- 经典内部排序算法学习总结(算法思想、可视化、Java代码实现、改进、复杂度分析、稳定性分析)
- 一步步学习数据结构和算法之常用排序效率分析及java实现
- 我的Java开发学习之旅------>Java经典排序算法之插入排序
- 算法学习之排序——选择排序(Java)
- 【幻化万千戏红尘】qianfengDay11-java基础学习:数组,排序,算法
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- 【算法学习笔记】03.白书练习题stat(排序入门:冒泡,桶)
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- Java学习笔记之数组排序算法
- Java 常用算法 插入,冒泡,快速排序大放送
- JAVA基础day04 数组学习 排序和查找基本算法