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

Java基础实例

2015-06-28 23:55 429 查看
打印等腰三角形代码

public class ForForTest{

public static void main(String []args){

for(int x=0;x<5;x++){

for(int y=x+1;y<5;y++){

System.out.print(" ");

}

for(int z=0;z<x;z++){

System.out.print("* ");

}

System.out.println();

}

}

}

折半查找代码:

//练习:给一个数值,要求插入给定数组中,并且保证插入后数组按一定的顺序排列

public class ArrayTest2{ //数组查找数值

public static void main(String []args){

int arr[] = {1,2,3,4,5,6,7,88,9,10};

int index = getIndex(arr,8);

System.out.println("关键字存在在数组中的第"+(index+1)+"位");

}

public static int halfSeach_2(int arr[],int key){ //第二种 折半方法。 按照索引值进行比较

int max,min,mid;

min = 0;

max = arr.length - 1;

while(min<=max){ //条件为真的时候进行比较

mid = (max+min)/2 ; //位运算 相当于除2

if(key>arr[mid])

min = mid +1 ;

else if(key < arr[mid])

max = mid -1;

else

return mid;

}

return -1;

}

//得到 该数值插入到数组中的第几位

//思路:利用折半查找,如果找到数组中有相应的数,便将该数插入到该位置,若没有找到那么返回折半索引的最小位。

public static int getIndex(int arr[],int key){

int max,min,mid;

min = 0;

max = arr.length - 1;

mid = (max + min) / 2;



while(key != arr[mid]){ //当 关健值 不等于 中间值时,进行折半查找。

if(key>arr[mid])

min = mid +1 ;

else

max = mid -1;

if(min > max)

return min;

mid = (max + min)/2;

}

return mid;

}

/*

折半查找: 前提是 数组是个有序的数列

1、首先定义数组最大索引和最小索引

2、算出中间索引值

3、将对应的中间索引值与关健值比较-----> if(key>arr[mid]) min = mid+1;else if(key<arr[mid]) max = mid-1;

*/

public static int halfSeach(int arr[] , int key){

int max,min,mid;

min = 0;

max = arr.length - 1;

mid = (max + min) / 2;



while(key != arr[mid]){ //当 关健值 不等于 中间值时,进行折半查找。

if(key>arr[mid])

min = mid +1 ;

else

max = mid -1;

if(min > max)

return -1;

mid = (max + min)/2; //循环中一直进行折半。

}

return mid;

}

}

排序算法的代码,包括冒泡、选择、折半排序

import java.util.*;

public class ArrayTest{

public static void main(String []args){

int []arr = {23,3,1,53,43,13,10};

//排序前

printArray(arr);

//排序

//selectSort(arr);

bobleSort(arr);



//Arrays.sort(arr); //java中已经封装好的排序算法

//排序后

printArray(arr);

}

//选择排序

public static void selectSort(int []arr){

for(int x=0;x<arr.length-1;x++){

for(int y=x+1;y<arr.length;y++){

if(arr[x]>arr[y]){

swap(arr,x,y);

}

}

}

}

//冒泡排序:每次比较相邻的元素,满足条件的换位。每一层循环之后,最大值回到元素的顶端,因此比较时内层循环数组值减少一位。

public static void bobleSort(int arr[]){

for(int x=0;x<arr.length-1;x++){

for(int y=0;y<arr.length-x-1;y++){ //减1 的原因是,防止数组越界。

if(arr[y]>arr[y+1]){

swap(arr,y,y+1);

}

}

}

}

//交换元素

public static void swap(int arr[],int a ,int b ){

int temp = arr[a];

arr[a] = arr[b];

arr[b] = temp;

}

//打印数组

public static void printArray(int arr[]){

System.out.print("[");

for(int i=0;i<arr.length;i++){

if(i != arr.length-1){

System.out.print(arr[i]+",");

}else{

System.out.print(arr[i]);

}

}

System.out.print("]");

System.out.println();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: