一些常见的算法,包括选择排序法,冒泡排序法,折半查找法,和函数的使用;

来源:互联网 发布:下颌第一磨牙雕刻数据 编辑:程序博客网 时间:2024/05/23 07:23
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;
 }


 
 
 
 

 }



















阅读全文
0 0