打印等腰三角形代码
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();
}
}