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

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;

 }

 

 

 

 

 }

    原文作者:查找算法
    原文地址: https://blog.csdn.net/darkjazz11/article/details/78525623
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞