Java基础实例

打印等腰三角形代码

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("keyword存在在数组中的第"+(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(); } }




原文地址:https://www.cnblogs.com/yxysuanfa/p/6907938.html