一些常見的算法,包括選擇排序法,冒泡排序法,折半查找法,和函數的使用;

import java.util.Arrays;

/**  作者:Darkjazz11

*    日期:2017年11月13日 下午8:37:28
*/

/**
 *
 *一些常見的算法,包括選擇排序法,冒泡排序法,折半查找法,和函數的使用;
 *
 */



public class shuzusuanfa {
 public static void main(String[] args){
    int[] arr={1,3,4,5,6,7,5};
    //xuanze(arr);
    maopao(arr);
    for(int a:arr){
        System.out.println(a);
    }
    int index=zheban(arr,5);
    System.out.println(index);
    //Arrays.sort(arr);   //排序將數組排成升序;
    int index1=Arrays.binarySearch(arr,5);//此函數只能在升序時有用;
    System.out.println(index1);
    
    int[] newarr = arr.clone(); // 數組的克隆
    System.out.println(Arrays.toString(newarr)); //打印數組的函數
    
    int[] newarr1=shanjian(arr,5);    //數組元素的提取和刪除
    System.out.println(Arrays.toString(newarr1));
    
    
 }
 
 /*

選擇排序。

 以一個角標的元素和其他元素進行比較。

 在內循環第一次結束,最值出現的頭角標位置上。


*/
 public static void xuanze(int[] a){
     int temp=0;
     for(int i=0;i<a.length-1;i++){
         for(int j=i+1;j<a.length;j++){
             if(a[j]>a[i]){
                 temp=a[i];
                 a[i]=a[j];
                 a[j]=temp;
                
                
             }
                    
            
         }
        
     }
    
    
    
 }
 
 
 
 /*
冒泡排序。
 比較方式:相鄰兩個元素進行比較。如果滿足條件就進行位置置換。
 原理:內循環結束一次,最值出現在尾角標位置。
 */

 public static void maopao(int[] a){
     int temp=0;
     for(int i=0;i<a.length-1;i++){
         for(int j=0;j<a.length-1-i;j++){
             if(a[j+1]<a[j]){
                 temp=a[j];
                 a[j]=a[j+1];
                 a[j+1]=temp;
                
             }
            
         }
        
     }
    
 }
 
 
 /*
折半查找
 爲了提高查找效率,可使用折半查找的方式,注意:這種查找只對有序的數組有效。
 這種方式也成爲二分查找法。
 */


 public static int zheban(int[] arr,int key){
    
     int min,mid,max;
     min = 0;
     max = arr.length-1;
     mid = (max+min)/2;
     while(arr[mid]!=key)
     {
     if(key>arr[mid])
     min = mid + 1;
     else if(key<arr[mid])
     max = mid - 1;
     if(min>max)
     return -1;
     mid = (max+min)/2;
     }
     return mid;

    
 }


/*
 * 數組的增加和減少
 */
 public static int[] shanjian(int[] arr,int a){
     int count=0,j=0;
     for(int i=0;i<arr.length;i++){
         if(arr[i]==a){
             count++;
         }
        
     }
     int[] newarr=new int[arr.length-count];
     for(int i=0;i<arr.length;i++){
         if(arr[i]==a){
            
         }else{
             newarr[j]=arr[i];
             j++;
         }
        
     }
    
    return newarr;
 }


 
 
 
 

 }



















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章