算法 (递归排序 冒泡排序 水桶排序)
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));
}
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));
}
相关文章推荐
- Android属性设置android:noHistory="true",打开下一个Activity关闭本Activity
- LightOJ 1294 Positive Negative Sign【大水】
- 使用MPI并行求解前缀和(prefix sum)
- Xamarin.Andrid 服务
- phpstorm安装,破解及使用
- 【学神】1-14 内核编译
- UVa 156 - Ananagrams【各种stl】
- 驱动读写寄存器
- android 引入ActionBar报错Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat t
- POJ-2578
- Chrome内核解析:GraphicsContext之间的同步
- The little redis book----第5章 Lua 脚本
- 使用Swing组件编写一个支持中文文本编辑程序ChineseTextEdit.java
- 第十周项目3利用二叉树遍历思想解决问题
- 二叉树前序,中序,后序遍历迭代实现详解
- UVALive-2966 King's Quest(强连通+二分图匹配)
- hust 1010 - The Minimum Length KMP求循环节
- hibernate中持久化类映射到数据表的注意事项。
- java Equals解析
- android倒计时功能的实现(CountDownTimer)