数据结构-绪论作业

来源:互联网 发布:linux系统镜像制作 编辑:程序博客网 时间:2024/05/22 23:50

数据结构—绪论作业

1、从一组N个数中确定其中的第k个最大者的问题称为选择问题(selection problem),请编写一个程序解决选择问题。要求使用泛型


泛型,泛型,泛型。。


/* * 绪论作业 * 1、从一组N个数中确定其中的第k个最大者的问题称为选择问题(selection problem),请编写一个程序解决选择问题。要求使用泛型。 */package Test1;class Selection <T>{<T extends Number>Number select(T number[],int k){for(int i=0;i<number.length;i++){for(int j=0;j<number.length-1;j++){if(((Number)number[j]).doubleValue()<((Number)number[j+1]).doubleValue()){Object temp;temp=number[j+1];number[j+1]=number[j];number[j]=(T)temp;}}}return number[k-1];}}public class Test1_1 {public static void main(String[] args){Number number[] = {3,5,2.0,5.3,100,23};Selection<Number> select= new Selection<Number>();int k=3;System.out.println(select.select(number, k));}}




 2.编写一个递归方法,它返回数N的二进制表示中1的个数。利用这样的事实:如果N是奇数,那么其1的个数等于N/2的二进制表示中1的个数加1


分析一下,偶数的二进制表示,最后一位一定是0,奇数最后一位是1。所以偶数N二进制表示中1的个数 和 N/2  是一样的,奇数N二进制表示中1的个数 和 N/2 + 1相等,0的二进制表示中1的个数是0;

然后递归就行了。

/* * 绪论作业 * 2.编写一个递归方法,它返回数N的二进制表示中1的个数。利用这样的事实:如果N是奇数,那么其1的个数等于N/2的二进制表示中1的个数加1 */package Test1;import java.util.*;class SumOfBinary{int sumOfBinary(int n){if(n<0)n=-n;if(n==0){return 0;}else if(n%2!=0){return sumOfBinary(n/2)+1;}else{return sumOfBinary(n/2);}}}public class Test1_2 {public static void main(String[] args){Scanner input = new Scanner(System.in);SumOfBinary sumofbinary = new SumOfBinary();int num=input.nextInt();input.close();System.out.println(num+"二进制表示中1的个数是:"+sumofbinary.sumOfBinary(num));}}




1 0
原创粉丝点击