1.递归排序

例如:打印某个磁盘的所有文件

private static void listfiles(File file) {
  // 打印路径
  System.out.println(file.getAbsolutePath());
  try {
   // 如果是文件夹 打印所以文件
   if (file.isDirectory()) {
    File[] files = file.listFiles();
    for (File f : files) {
     if (f.isFile()) {
      System.out.println(f.getAbsolutePath());
     } else if (f.isDirectory()) {
      listfiles(f);
     }
    }
   }
  } catch (Exception e) {
   // TODO: handle exception
  }
 }

 

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));
 }