算法面试题(一)

一、请写出n!的算法。

package digui;
/**
 *author:bingbing
 *日期:2020年2月27日
 *时间:下午3:21:14
 */

public class Demo01 {
	
	
	/**
	 * 写出n!算法
	 */
	public static void main(String[]args) {
		
		int n=5;
		int result=count(n);
		System.out.println("结果为:"+result);
		
	}

	private static int count(int n) {
		
		if(n<0) {
			System.out.println("输入错误!");
			return -1;
		}else if(n==1 ||n==2) {
			return n;
		}else {
			return n*count(n-1);
		}
	}

}

结果为:120

二、写一个排序算法,将10个1-100的随机数字进行排序

         使用选择排序算法实现10个1-100随机数字的排序。

         基本思想: 从第一个元素开始,后面的元素与之比较,如果后面的元素比它小,则将后面的元素交换位置放到前面去,直到换到最后一个元素为止。

package digui;
/**
 *author:bingbing
 *日期:2020年2月27日
 *时间:下午3:49:15
 */

public class Demo02 {
	
	/**
	 * 使用选择排序排序一个数组 5 ,7 ,2,8,9,1,4,6,3,0
	 */
	
	public static void main(String[]args) {
		int[] num= new int [10];
		for(int i=0;i<10;i++) {
			num[i]=(int) (Math.random()*10);
		}
		
		
		
		selectSort(num);
		for(int i=0;i<num.length;i++) {
			System.out.println(num[i]);
		}
	}

	private static void selectSort(int[] num) {
		// TODO Auto-generated method stub
		for(int i=0;i<num.length;i++) {
			
			//先记住i的位置
			int m=i;
			for(int j=i+1;j<num.length;j++) {
				if(num[j]<num[m]) {
					m=j;
				}
			}
			if(i!=m) {
				swap(num,i,m);
			}
			
		}
		
	}

	private static void swap(int[] num, int i, int m) {
		int t;
		t=num[i];
		num[i]=num[m];
		num[m]=t;
	}

}

打印结果:0 0 2 3 4 4 6 6 7 7 

   该算法的时间复杂度为o()

三、 冒泡排序

      使用JAVA语言实现冒泡排序

      基本思想:   相邻元素两两比较,每次比较完毕后,将大的数往右移,小的数往左移,比较完n-1次后,即可完成排序。

   

package suanfa;
/**
 *author:bingbing
 *日期:2020年2月27日
 *时间:下午4:25:42
 */

public class Demo03 {
	
	/**
	 * 冒泡排序,相邻元素之间两两比较5 ,7 ,2,8,9,1,4,6,3,0
	 * 
	 * 第一次结果为: 5,2,7,8,1,4,6,3,0,9
	 * 第二次结果为: 2,5,7,1,4,6,3,0,8,9
	 * 第三次结果为: 2,5,1,4,6,3,0,7,8,9
	 * 第四次结果为: 2,1,4,5,3,0,6,7,8,9
	 * 第五次结果为: 1,2,4,3,0,5,6,7,8,9
	 * 第六次结果为: 1,2,3,0,4,5,6,7,8,9
	 * 第七次结果为: 1,2,0,3,4,5,6,7,8,9
	 * 第八次结果为: 1,0,2,3,4,5,6,7,8,9
	 * 第九次结果为: 0,1,2,3,4,5,6,7,8,9
	 */
	
	public static void main(String[]args) {
		
		
		int[] num= {5 ,7 ,2,8,9,1,4,6,3,0};
		
		bubbleSort1(num);
		for(int i=0;i<num.length;i++) {
			System.out.print(num[i]+" ");
		}
		System.out.println();
	}

	private static void bubbleSort1(int[] num) {
		// TODO Auto-generated method stub
		for(int i=0;i<num.length;i++) {
			for(int j=0;j<num.length-1-i;j++) {
				if(num[j]>num[j+1]) {
					int temp;
					temp=num[j];
					num[j]=num[j+1];
					num[j+1]=temp;
				}
			}
		}
		
	}
	

}

结果: 0 1 2 3 4 5 6 7 8 9 

发布了54 篇原创文章 · 获赞 45 · 访问量 9290

猜你喜欢

转载自blog.csdn.net/qq_33036061/article/details/104537372