日期:2014-05-20 浏览次数:20912 次
package com.wxg.algorithm;
public class MaoPaoPaiXu {
int[] arr = new int[10] ;
///arr = {10,39,2,55,87,29,37,45,90,100}; // 这种大括号初始化的方式只能用在声明时,其他地方都不行。
//int[] arr1 = {10,39,2,55,87,29,37,45,90,100};
/**
* 这个sorted方法只适用于int类型的数组。
* 要扩展成适用所有类型的数组是用object[],还是泛型呢?
*/
public static int[] sorted(int[] arr){
for(int i=arr.length-1;i>0;i--){
for(int j=0;j<i;j++){
int temp = 0;
if(arr[j+1] < arr[j]){
temp = arr[j+1];
arr[j+1] = arr[j] ;
arr[j] = temp ;
}
}
}
return arr ;
}
/**
* 还是书上,作者的列子比较清晰。定义两个计数器:out,in ,
* out外层的循环次数, 内层的循环计数in 每次都是从0开始。
* @param arr
* @return
*/
public static int[] bubbleSort(int[] arr){
int out ,in ;
int temp ;
/**注意到书中的out>1即out=2将是最后一次循环。out>1是不对的,
* 一次循环无法将0、1、2三个元素正确排序。特别是数组中的元素是倒序的
* main方法中的arr2 即是,运行程序,发现还需要一次交换!*/
for(out=arr.length-1;out>1;out--){
for(in=0;in<out;in++){
if(arr[in+1] < arr[in]){
temp = arr[in+1];
arr[in+1] = arr[in];
arr[in] = temp ;
}
}
}
return arr ;
}
/**
* display方法也是只能循环打印 int 类型的数组
* @param arr
*/
public static void display(int[] arr){
System.out.print("数组arr的所有元素: ");
for(int i=0;i<arr.length;i++){
// 千万不要写成i,而应该是arr[i]
System.out.print(arr[i]+" ");
}
System.out.println("");
}
public static void main(String[] args) {
int[] arr1 = {10,39,2,55,87,29,37,45,90,100};
int[] arr2 = {100,99,78,68,57,45,41,40,32,30,22,11,8,5,3,1,0};
/** 如果arr1 还是定义为类的成员变量,display和sorted方法不能直接调用。
* 因为:静态方法不能调用非静态域。Cannot make a static reference to the non-static field arr
* 必须创建一个对象,然后调用**/
//display(arr);
display(arr2);
//sorted(arr1);
bubbleSort(arr2);
display(arr2);
}
}
public class BubbleSort {
static void bubbleSort(int[] arr){
for(int i = 0; i < arr.length - 1; ++i){
boolean flag = false;
for(int j = 0; j < arr.length - i - 1; ++j){
if(arr[j] > arr[j+1]){
flag = true;
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
if(!flag)
return;
}
}
public static void main(String[] args){
int[] a = {2, 3, 6, 5, 4};
bubbleSort(a);
for(int i = 0; i < a.length; ++i)
System.out.print(a[i] + " ");
System.out.println();
}
}
------解决方案--------------------
不是java算法函数定义的很多,所以算法不用的吗?
------解决方案--------------------