码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础实例

时间:2015-06-29 00:32:05      阅读:187      评论:0      收藏:0      [点我收藏+]

标签: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("关键字存在在数组中的第"+(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();
    }
}


Java基础实例

标签:java   实例   简单的排序   

原文地址:http://blog.csdn.net/u011521890/article/details/46675749

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!