import java.util.Scanner;
public class JPA510 {
public static Scanner keyboard = new Scanner(System.in);
public static void main(String[] argv) {
search();
search();
}
public static void search() {
int[] data = {5, 9, 13, 15, 17, 19, 25, 30, 45}; // 已排序資料
System.out.print("請輸入要找尋的資料:");
int target = keyboard.nextInt();
int high=data.length-1;
int low=0;
int mid=(high+low)/2;;
int times=0;
while(low<=high){
times++;
mid=(high+low)/2;
System.out.println("尋找區間"+low+"("+data[low]+").."+high+"("+data[high]+"), 中間 : "+data[mid]);
if(target==data[mid]){
break;
}
else if(target<data[mid]){
high=mid-1;
}
else{
low=mid+1;
}
}
System.out.println("經過"+times+"次的尋找");
if(target==data[mid]){
System.out.println("您要找的資料在陣列中的第"+mid+"位置");
}
else{
System.out.println(target+"不在陣列中");
}
}
}
510 二分搜尋法
509 選擇排序法
public class JPA509 {
public static void main(String[] argv) {
int[] data = {1, 3, 2, 5, 4, 6};
sort(data);
}
public static void sort(int data[]){
int min,tmp;
for(int i=0;i<data.length-1;i++){
min=i;
for(int j=i;j<data.length;j++){
if(data[j]<data[min]){
min=j;
}
}
tmp=data[i];
data[i]=data[min];
data[min]=tmp;
for(int k: data){
System.out.print(" "+k);
}
System.out.println();
}
}
}
508 泡泡排序法
public class JPA508 {
public static void main(String[] argv) {
int[] data = {2, 4, 3, 5, 7, 6, 9, 1}; // 為排序的資料
int tmp;
for(int i=0;i<data.length-1;i++){
for(int j=0; j<data.length-1-i;j++){
if(data[j]>data[j+1]){
tmp=data[j];
data[j]=data[j+1];
data[j+1]=tmp;
}
}
for(int k: data){
System.out.print(" "+k);
}
System.out.println();
}
}
}
507 停車費用計算
public class JPA507 {
public static void main(String[] argv) {
int hours = 0; //停車時數
hours = 2;
park(hours);
System.out.println("--------------------");
hours = 3;
park(hours);
System.out.println("--------------------");
hours = 5;
park(hours);
System.out.println("--------------------");
hours = 8;
park(hours);
}
public static void park(int hours) {
int[] hourTable = {0, 2, 4, 6}; // 時段
int[] feeTable = {30, 50, 80, 100}; // 時段費率
int fee = 0; //停車費用
for(int i=(hourTable.length-1) ; i>=0 ; i--){
if(hours>hourTable[i]){
fee+=(hours-hourTable[i])*feeTable[i];
for(int j=i ; j>0 ; j--){
fee+=(hourTable[j]-hourTable[j-1])*feeTable[j-1];
}
break;
}
}
System.out.println("停車時數:" + hours + "小時");
System.out.println("應繳費用:" + fee + "元整");
}
}
506 三維陣列元素之和
public class JPA506 {
public static void main(String[] argv) {
int sum =0;
int A[][][] = {{{1,2,3},{4,5,6}},
{{7,8,9},{10,11,12}},
{{13,14,15},{16,17,18}},
{{19,20,21},{22,23,24}}};
for(int i=0;i<4;i++){
for(int j=0;j<2;j++){
for(int k=0;k<3;k++){
sum+=A[i][j][k];
}
}
}
System.out.printf("sum = %d\n", sum);
}
}
505 反轉陣列
public class JPA505 {
public static void main(String[] argv) {
String[] data = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
System.out.print("反轉陣列資料之前: ");
for(int i=0;i<data.length;i++){
System.out.print(" "+data[i]);
}
System.out.println();
reverse(data);
System.out.print("反轉陣列資料之後: ");
for(int i=0;i<data.length;i++){
System.out.print(" "+data[i]);
}
System.out.println();
}
public static void reverse(String a[]) {
String tmp;
int i=0;
int j=(a.length-1);
while(i<(a.length/2)){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
i++;
j--;
}
}
}
504 費氏數
import java.util.Scanner;
public class JPA504 {
public static Scanner keyboard = new Scanner(System.in);
public static void main(String[] argv) {
int []f= new int[10];
f[0]=keyboard.nextInt();
f[1]=keyboard.nextInt();
for(int i=2;i<f.length;i++){
f[i]=f[i-1]+f[i-2];
System.out.println(f[i]);
}
}
}
503 矩陣之和
public class JPA503 {
final static int ROW = 2;
final static int COL = 3;
public static void main(String args[]) {
int A[][] = {{1,2,3}, {4,5,6}};
int B[][] = {{7,8,9}, {10,11,12}};
int C[][] = new int[ROW][COL];
System.out.printf("陣列A的內容為(3x3):\n");
show(A);
System.out.printf("\n陣列B的內容為(3x3):\n");
show(B);
add(A, B, C);
System.out.printf("\n陣列A+B=C,陣列C的內容為(3x3):\n");
show(C);
}
public static void add(int a[][],int b[][],int c[][]) {
for(int i=0;i<ROW;i++){
for(int j=0;j<COL;j++){
c[i][j]=a[i][j]+b[i][j];
}
}
}
public static void show(int x[][]) {
for(int i=0;i<ROW;i++){
for(int j=0;j<COL;j++){
System.out.printf("%02d ",x[i][j]);
}
System.out.println();
}
}
}
502 浮點數計算
import java.util.Scanner;
public class JPA502 {
public static Scanner keyboard = new Scanner(System.in);
public static void main(String args[]) {
int n;
float sum=0;
System.out.print("請輸入學生人數:");
n= keyboard.nextInt();
float v[]=new float[n];
for(int i=0;i<n;i++){
System.out.print("請"+(i+1)+"個學生成績 : ");
v[i]=keyboard.nextFloat();
sum+=v[i];
}
System.out.println("人數:"+n);
System.out.println("總分:"+sum);
System.out.println("平均:"+sum/(float)n);
}
}
501 陣列計算
import java.util.Scanner;
public class JPA501{
public static void main(String args[]) {
int sum=0;
int n=0;
int []vector = new int[10];
Scanner keyboard = new Scanner(System.in);
System.out.println("請輸入10個整數:");
for(int i=0;i<10;i++){
System.out.print("第"+(i+1)+"個整數:");
vector[i]=keyboard.nextInt();
if(vector[i]>60){
sum+=vector[i];
n++;
}
}
System.out.println("陣列中大於60的有" + n + "個\n總合為" + sum + "\n平均值為" + (sum / (double)n));
}
}
訂閱:
文章 (Atom)