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
}
}
public class Dgui2 {
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.冒泡排序package maopao;
public class maopao {
public void maopao1(){
int nums[]={2,3,19,8,5};
int tem;
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]>nums[j]){
tem=nums[i];
nums[i]=nums[j];
nums[j]=tem;
}
}
}
for (int i = 0; i < nums.length; i++) {
System.out.print(" "+nums[i]+" ");
}
}
public static void main(String[] args){
maopao m=new maopao();
m.maopao1();
}
} public class Java 05 {
public class maopao {
public void maopao1(){
int nums[]={2,3,19,8,5};
int tem;
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]>nums[j]){
tem=nums[i];
nums[i]=nums[j];
nums[j]=tem;
}
}
}
for (int i = 0; i < nums.length; i++) {
System.out.print(" "+nums[i]+" ");
}
}
public static void main(String[] args){
maopao m=new maopao();
m.maopao1();
}
} public class Java 05 {
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));
}
4.水仙花数
public class ShuiXianHuaShu {
public static void main(String[] args) {
int x = 0; //定义水仙花数的个数
for(int i=100;i<=999;i++){
int b = i/100; //取得百位数
int s = i%100/10; //取得十位数
int g = i%10; //取得个位数
if(i==Math.pow(b, 3) + Math.pow(s, 3) + Math.pow(g, 3)){
x++; //每次符合水仙花数条件,则x+1;
System.out.print(i+" "); //输出符合条件的数
}
}System.out.println(); //换行
System.out.println("水仙花数总共有"+x+"个"); //输出水仙花数的总数
}
}