您的位置:首页 > 编程语言 > Java开发

java算法题

2014-11-01 20:30 141 查看
1.

*已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,数字不重复,

* 请用算法算出0~99中缺少的2个数字是哪两个?

* 要求:数组自己用程序生成,数值介于0~99,相互之间不重复。

package myTest;

import java.util.Arrays;
import java.util.Random;
/**
* 已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,数字不重复,
* 请用算法算出0~99中缺少的2个数字是哪两个?
* 要求:数组自己用程序生成,数值介于0~99,相互之间不重复。
* 上传代码的时候将运算结果截图一起提交。
* @author Administrator
*
*/

public class FindLost {
public static void main(String[] args) {
int[] ary = new int[98];
//数组默认每个值为0,现在改为-1
Arrays.fill(ary, -1);
for(int i=0;i<98;){
int temp = new Random().nextInt(100);
if(compare(temp,ary))
continue;
ary[i++] = temp;
}
System.out.println("装载:"+ Arrays.toString(ary));
System.out.println("缺少:"+ Arrays.toString(find(ary)));

}
//比较有没有相同数据
public static boolean compare(int random,int [] ary){
for(int j=0;j<ary.length;j++){
if(random ==ary[j]){
return true;
}
}
return false;
}
//查找缺少的2个数字
public static int[] find(int[]ary){
int[] lost = new int[2];
Arrays.sort(ary);//系统提供的排序
System.out.println("排序:"+ Arrays.toString(ary));
//查找方法
boolean same = false;
int temp = 0;//仅为了自增用
for(int i=0;i<100;i++){
for(int j=0;j<ary.length;j++){
if(i==ary[j]){
same =true;
break;
}
}
if(!same){
lost[temp++] = i;
}else{
same = false;
}
}
return lost;
}
}


2.随机生成双色球号码

package myTest;
import java.util.Random;
import java.util.Arrays;

public class DoubleBall {
/**实现随机生成双色球号码: [ 02 22 13 16 18 12 12 ]
红球 33 个球 (01~33) 取 六
蓝球 16 个球 (01~16) 取 一
*/
public static void main(String[] args) {
int[] ary = new int[]{	};
Random r = new Random();
boolean same = false;
while(ary.length<6){
int num = r.nextInt(34);
for(int j=0;j<ary.length;j++ ){
if(ary[j] ==num){
same = true;
break;
}
}
if(same){
continue;
}
ary = Arrays.copyOf(ary, ary.length+1);
ary[ary.length-1] = num;
}

//最后一位
ary = Arrays.copyOf(ary, ary.length+1);
ary[ary.length-1] = r.nextInt(17);
printView(ary);
}
/**
* 按照格式打印显示
*/
public static void printView(int[] ary){
System.out.print("[ ");
for(int i = 0;i<ary.length;i++){
if(ary[i]<10){
System.out.print("0"+ary[i]+" ");
}else{
System.out.print(ary[i]+ " ");
}

}
System.out.println("] ");
}
}


3.三种排序算法

package myTest;

import java.util.Arrays;

public class Sort {
public static void main(String[] args) {
int[] ary = { 8, 5, 2, 1, 6, 4 };
//bubbleSort(ary);
//selectionSort(ary);
insertSort(ary);
System.out.println(Arrays.toString(ary));
}

/** 冒泡排序 大数向后 */
public static void bubbleSort(int[] ary) {
for (int i = 0; i < ary.length - 1; i++) {// length-1次,最后一个不用冒了.
for (int j = 0; j < ary.length - 1 - i; j++) {
if (ary[j] > ary[j + 1]) {
int t = ary[j];	ary[j] = ary[j + 1];ary[j + 1] = t;
}
}
}
}
/**选择排序  每次选出最小的数放前面 */
public static void selectionSort(int[] ary) {
for(int i=0;i<ary.length-1;i++){
for(int j=i+1;j<ary.length;j++){
if(ary[i]>ary[j]){
int t = ary[i];	ary[i] = ary[j];ary[j] = t;
}
}
}
}
/**插入排序  */
public static void insertSort(int[] ary){
int t,i,j;
for(i=1;i<ary.length;i++){
System.out.println(Arrays.toString(ary));
t = ary[i];
for(j=i-1;j>=0&&ary[j]>t;j--){
ary[j+1] = ary[j];
}
ary[j+1] = t;
}
}
}


4.打印菱形图案

package algorithm50;

import java.util.Scanner;
/**打印图形*/
public class Test19 {
/**
*
***
*****
*******
*****
***
*    */
public static void main(String[] args) {
int n;
Scanner scan = new Scanner(System.in);
System.out.println("input:");
n = scan.nextInt();
for(int i= -(n-1);Math.abs(i)<n;i++	){
for(int j=0;j<Math.abs(i);j++){
System.out.print(" ");
}
for(int k=0;k<2*(n-Math.abs(i))-1;k++){
System.out.print("*");
}

System.out.println();
}
}
}


5.打印乘法口诀

package algorithm50;

public class Test16 {
//输出9*9 口诀。
public static void main(String[] args) {
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+" * "+i+" = "+i*j+"   ");
}
System.out.println();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: