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、想要轉載請注明轉載來源