算法之冒泡、选择、递归、随机、循环

来源:互联网 发布:javascript 按位取反 编辑:程序博客网 时间:2024/06/06 07:29

一,冒泡排序

package com.java.method;

/**
 * @author Dell
 * 冒泡方法对数组元素进行排序
 */
public class MaoPao {
 public static void main(String[] args) {
  int[] arr={5,63,2,45,1,8,7,14};
  System.out.print("排序前是:");
  for (int i : arr) {
   System.out.print(i+" ");
  }
  System.out.println();
  for (int x = 0; x < arr.length-1; x++) {
   //减去1是为了避免数组角标越界异常的发生,减去x是递变规律
   for (int y = 0; y < arr.length-1-x; y++) {
    int temp=0;
    if (arr[y]>arr[y+1]) {
     temp=arr[y];
     arr[y]=arr[y+1];
     arr[y+1]=temp;
    }
   }
  }
  System.out.print("排序后是:");
  for (int i : arr) {
   System.out.print(i+" ");
  }
 }
}

二,选择排序

package com.java.method;

/**
 * @author Dell
 * 利用选择排序对数组元素进行排序
 */
public class XuanZe {
 public static void main(String[] args) {
  int[] arr={15,2,3,85,0,-2,9,32};
  System.out.print("排序前是:");
  for (int i : arr) {
   System.out.print(i+" ");
  }
  System.out.println();
  for (int x = 0; x < arr.length-1; x++) {
   for (int y = x+1; y < arr.length; y++) {
    int temp;
    if (arr[x]>arr[y]) {
     temp=arr[x];
     arr[x]=arr[y];
     arr[y]=temp;
    }
   }
  }
  System.out.print("排序后是:");
  for (int i : arr) {
   System.out.print(i+" ");
  }
 }
}

三,递归的使用案例

1.随机产生0到100之间的10个数,并求出最大值

package com.java.method;

/**
 * @author Dell
 * 随机产生10个0到100之间的数并求出最大值
 */
public class RanMat {
 public static void main(String[] args) {
  int[] arr=new int[10];
  int max=0;
  System.out.print("十个数分别是:");
  for (int x = 0; x < arr.length; x++) {
   arr[x]=(int) (100*Math.random());
   System.out.print(arr[x]+" ");
   if (max<arr[x]) {
    max=arr[x];
   }
  }
  System.out.println();
  System.out.print("最大的数是:"+max);
 }
}

 

2.随机产生一个50到100之间的数

package com.java.method;

import java.util.Random;

/**
 * @author Dell
 * 随机产生50到100之间的数(区间可任意指定)
 */
public class RanMath {
 public static void main(String[] args) {
  int result=getValue();
  System.out.println("符合条件的数是:"+result);
 }

 private static int getValue() {
  Random ran=new Random();
  //指定一个上限100
  int result=ran.nextInt(100);
  if (result<50) {
   result=getValue();
  }
  return result;
 }
}

四,嵌套循环的使用

求1,2,3,4这样四个数能组成多少个没有重复数字的三位数

package com.java.method;

/**
 * @author Dell
 * 1,2,3,4四个数能组成多少个无重复数字的三位数?分别是?
 */
public class Valu {
 public static void main(String[] args) {
  int counter=0;
  System.out.print("这样的数分别是:");
  for (int x = 1; x < 5; x++) {
   for (int y = 1; y < 5; y++) {
    for (int z = 1; z < 5; z++) {
     if (x!=y&&x!=z&&y!=z) {
      int val=100*x+10*y+z;
      counter++;
      System.out.print(val+" ");
     }
    }
   }
  }
  System.out.println();
  System.out.print("这样的数一共有:"+counter+"个");
 }
}

 

原创粉丝点击