您的位置:首页 > 其它

算法 (递归排序 冒泡排序 水桶排序)

2015-11-08 13:10 253 查看
1.递归排序

public class Java04 {

    public static void main(String[] args) {

        // n! 6!=1*2*3*4*5*6=6*5!

        int n = 12;

        int result = diGui(n);

        System.out.println(n + "!=" + result);

    }

    /**

     * 1.自己调用自己 2.一定要有退出条件(不调自己的地方)

     */

    private static int diGui(int i) {

        if (i == 1) {

            return 1;

        }

        return i * diGui(i - 1);

    }

}

 

2.冒泡排序
public class Java05 {

 public static void main(String[] args) {

  int[] nums = { 10, 30, 50, 20, 40, 60, 70, 80, 90 };

  System.out.println(Arrays.toString(nums));

  bubbleSort(nums);

  System.out.println(Arrays.toString(nums));

 }

 private static void bubbleSort(int[] nums) {

  // 1.把第1个数拿出来,和后面的所有数比较,比后面的大就叫换位置

  // 2.把第2个数拿出来,和后面的所有数比较,比后面的大就叫换位置

  // 3.把第n-1个数拿出来,和后面的所有数比较,比后面的大就叫换位置

  // Arrays.sort(nums);

  for (int i = 0; i < nums.length - 1; i++) {

   for (int j = i + 1; j < nums.length; j++) {

    if (nums[i] > nums[j]) {

     int temp = nums[i];

     nums[i] = nums[j];

     nums[j] = temp;

    }

   }

  }

 }

 private static void printNums(int[] nums) {

  for (int num : nums) {

   System.out.print(num + " ");

  }

  System.out.println();

 }

}

3.水桶排序

public static void main(String[] args) {

  // 水桶排序

  // 假设所有的数字在[0-100)之间

  int[] nums = { 2, 5, 12, 5, 7, 8, 4, 80 };

  // 建水桶

  int[] bucket = new int[100];

  for (int num : nums) {

   bucket[num]++;

  }

  // 装回去

  int index = 0;

  for (int i = 0; i < bucket.length; i++) {

   for (int j = 0; j < bucket[i]; j++) {

    nums[index++] = i;

   }

  }

  // 打印

  System.out.println(Arrays.toString(nums));

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