11.冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后放,相当于气泡往上升,所以称作冒泡排序。请用JAVA语言编写一个完成冒泡排序算法的程序。
解答:
int[] bubbleSort(int before[]) {
int t;
for (int i = 0; i < before.length; i++) {
for (int j = 0; j < before.length – i – 1; j++) {
if (before[j] > before[j + 1]) {
t = before[j];
before[j] = before[j + 1];
before[j + 1] = t;
}
}
}
return before;
}
12.写出一段socket通讯(客户端)的代码,功能描述如下:
a)客户端发起socket通讯,报文结构为报文号(3位)+用户名(5位)+密码(8位)+ 结束符(固定为END)。此处报文号为100
b)服务端收到后返回应答报文,报文结构为报文号(3位)+验证结果(2位)+结束符(固定为END)。此处报文号为101
c)Socket服务器ip为192.168.0.2,端口号为9999
解答:
客户端代码:
Socket sk = new Socket(“192.168.0.2″,9999);
OutputStream os = sk.getOutputStream();
PrintWriter pw = new PrintWriter(os,true);
pw.write(“100stone888888END”);
pw.close();
sk.close();
服务器端代码:
ServerSocket vk = new ServerSocket(9999);
Socket sk = vk.accept();
OutputStream os = sk.getOutputStream();
PrintWriter pw = new PrintWriter(os,true);
pw.write(“101oldEND”);
pw.close();
sk.close();
13.编写函数insert(String str),将字符串”a,123;b,456;c,789”置入HashMap中。
解答:
import java.util.HashMap;
public class HashMapDemo {
HashMap<String,String> map=new HashMap<String,String>();
public void insert(String str){
map.put(“a”, str);
}
public static void main(String[] args) {
HashMapDemo demo=new HashMapDemo();
demo.insert(“a,123;b,456;c,789″);
}
}
14.有一数组 a[1000]存放了1000 个数,这 1000个数取自1-999, 且只有两个相同的数,剩下的 998个数不同, 写一个搜索算法找出相同的那个数的值(请用 C# or JAVA编程实现,注意空间效率和时间效率尽可能优化)。
解答:
import java.util.Arrays;
public class SearchDemo {
/** 被搜索数据的大小 */
private static final int size = 1000;
public static void main(String[] args) {
int[] data = new int[size];
// 添加测试数据
for (int k = 0; k < data.length; k++) {
data[k] = k + 1;
}
data[999] = 567;
result(data);
}
/**
* 调用分搜索算法的方法实现查找相同元素
* @param data
*/
public static void result(int data[]){
Arrays.sort(data);
for (int i = 0; i < data.length; i++) {
int target = data[i];
data[i] = 0;
int result = binaryFind(data, target);
if (result != -1) {
System.out.println(“相同元素为:”+data[result]);
break;
}
}
}
/**
* 二分搜索算法实现
*
* @param data
* 数据集合
* @param target
* 搜索的数据
* @return 返回找到的数据的位置,返回-1表示没有找到。
*/
public static int binaryFind(int[] data, int target) {
int start = 0;
int end = data.length – 1;
while (start <= end) {
int middleIndex = (start + end) / 2;
if (target == data[middleIndex]) {
return middleIndex;
}
if (target >= data[middleIndex]) {
start = middleIndex + 1;
} else {
end = middleIndex – 1;
}
}
return -1;
}
}
15.下面是一个由*号组成的4行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”;2、在屏幕上打印这个指定了行数的倒三角形。
*******
*****
***
*
解答:
import java.util.Scanner;
public class Lines {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int lines = scanner.nextInt();
if (lines > 3 && lines < 21) {
for (int i = lines-1; i >= 0; i–) {
for (int z = 0; z <= i * 2; z++) {
System.out.print(“*”);
}
System.out.print(“\n”);
}
}else{
System.out.println(“非法行数!”);
}
}
}
16.现有一个32位的整型变量 value和一个有32个元素的数组a[32],要求:1、对value随机赋值;2、让数组a[n]的值等于value“位n”的值,0<=n<=31。举例:如果value的“位0”(Bit0)=0,那么a[0]=0;如果value的“位10”(Bit10)=1,那么a[10]=1。
解答:
public class Foo {
public static void main(String[] args) {
//产生随机数
int random = (int) (Math.random() * Integer.MAX_VALUE + 1);
//转成二进制字符串
String str=Integer.toBinaryString(random);
//转成二进制时最前面的零被省略,补上省略的0
if(str.length()<32){
for(int j=0;j<=32-str.length();j++){
str=”0″+str;
}
}
//给数组赋值
int[] a=new int[32];
for(int i=0;i<str.length();i++){
a[i]=Integer.parseInt(String.valueOf(str.charAt(i)));
System.out.println(“a[“+i+”]=”+a[i]);
}
}
}
17.现有1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]。要求写出一个尽量简单的方案,找出没有被放入数组的那2个数,并在屏幕上打印这2个数。注意:程序不用实现自然数随机放入数组的过程。
答:
int[] b = new int[]{….存入98个随机的1~100的整数}; int[] a = new int[100]; for(int t : b) a[t-1]=t; for(int t=0; t < a.length; t++) if(a[t]==0) System.out.println(t+1);
18. 实现函数public String[ ] array(List list),其中参数list中元素类型为字符串
解答:
public String[] array(List list) {
String[] elementData = new String[list.size()];
for(int i=0;i<list.size();i++){
elementData[i]=(String)list.get(i);
}
return elementData ;
}
19.创建类Person,其中存储的成员数据为:age(int),sex(boolean),weight(int),至少有一个构造函数可以初始化这三个属性值,同时提供获取这三个属性值的public方法
解答:
public class Person {
private int age;
private boolean sex;
private int weight;
public Person() {
}
public Person(int age, boolean sex, int weight) {
this.age = age;
this.sex = sex;
this.weight = weight;
}
public int getAge() {
return age;
}
public boolean isSex() {
return sex;
}
public int getWeight() {
return weight;
}
}
20.设计线程类WorkerThread,其构造函数接受一个message字符串作为参数,把该字符串打印到console上,同时,在WorkThread的main函数中启动该线程。
解答:
public class WorkerThread extends Thread {
public WorkerThread(String message) {
System.out.println(message);
}
public static void main(String[] args) {
new WorkerThread(“hello world!”).start();
}
}
1、转载来源于 https://blog.csdn.net/wickedvalley/article/details/51589792
2、想要转载请注明转载来源