冒泡排序算法

来源:互联网 发布:联想网络同传edu8.0.1 编辑:程序博客网 时间:2024/06/04 17:46

最近在看算法相关的书籍,想提升下自己的编程思想,算法是计算机的灵魂,没有了算法计算机就不能高效的工作,还是建议看下算法的书籍,谁让我们是学计算机的啦,别的不多说了,下面我写的冒泡排序算法DEMO,有什么不对的地方,还望多多指教。

/**
 * 冒泡排序算法
 * @author admin
 *
 */
public class MaoPao {

/**
* 从小到大
*/
public static void smallAndBig(){
int[] arr = {-5,29,80,7,10,5,16,3,72,2,53,1,34};
//int[] arr = new int[10000];

//循环生成一个数组
// for (int i = 0; i < 10000; i++) {
// arr[i] = 10000-i;
// }

//输出
outPut(arr, "从小到大排序前");

int size = arr.length;
int temp = 0;

long start = System.currentTimeMillis();
//排序1
for (int i = 1; i < size; i++) {
for (int j = i; j > 0; j--) {
if(arr[j]<arr[j-1]){
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}else{
break;
}
}
}

//排序1改进
// for (int i = 1; i < size; i++) {
// for (int j = i; j > 0 && arr[j]<arr[j-1]; j--) {
// temp = arr[j-1];
// arr[j-1] = arr[j];
// arr[j] = temp;
// }
// }


//排序2;排序2比1快;10000个排序相差20ms
// for (int i = 0; i <= size - 1; i++) {
// for (int j = 1; j <= size - 1 -i; j++) {
// if(arr[j]<arr[j-1]){
// temp = arr[j];
// arr[j] = arr[j-1];
// arr[j-1] = temp;
// }
// }
// }

//输出
outPut(arr, "从小到大排序后");

long end = System.currentTimeMillis();
//System.out.println("\n排序所消耗时间:"+(end - start)+"ms");

}

/**
* 从大到小
*/
public static void bigAndSmall(){
int[] arr = {-5,29,80,7,10,5,16,3,72,2,53,1,34};
//输出
outPut(arr, "从大到小排序前");
int size = arr.length;
int temp = 0;
//排序1
for (int i = 1; i < size; i++) {
for (int j = i; j > 0 && arr[j]>arr[j-1]; j--) {
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
//输出
outPut(arr, "从大到小排序后");
}

/**
* 输出
* @param arr
* @param str
*/
public static void outPut(int[] arr, String str){
int arrSize = arr.length;
System.out.println("\n"+str+":");
for (int j = 0; j < arrSize; j++) {
if(j%100 == 0 && j > 0){
System.out.println("");
}
if(j == arrSize-1){
System.out.print(arr[j]);
}else{
System.out.print(arr[j]+",");
}
}
}

public static void main(String[] args) {
MaoPao.smallAndBig();
MaoPao.bigAndSmall();
}

}
原创粉丝点击