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