2022-7-15 pan小堂 数组排序算法

二分查找(理解)

public ych class{
 public static void main(String[] args){
     ///运用二分查找需要 数组在的值是递升的
	 int[] arr1 = new int[] {23,43,5,41,32,423,4,123,411};
	 //先递升排列    sort() 递升排列函数
	  Arrays.sort(arr1);
	 Scanner  p1 = new Scanner(System.in);
	   System.out.println("请输入一个数字");
	         int num =p1.nextInt();
	int l = 0 , r = arr1.length()-1;
	int index=-1;
	while(l<=r){
	    int mid = l+r+1>>1;
		if(arr1[mid]==num){
		     index = mid;
			 break;
		}else if(arr1[mid]<num){
		            l = mid+1;  
		}else{
		            r = mid-1;
		 }
	  }
	if(index!=-1){
	         System.out.println("存在的值的下标为"+index +" 并且值为"+arr1[inde]);
	}else{
	       System.out.println("值不存在");
	  }
   }
  }
}
二分查找和顺序查找的区别

冒泡排序

public class Ptz {
  public static void main(String[] args) {
     //冒泡排序  : 先头两个数先比较 然后大的数 与第三个数比较 大的数再与第4个数比较以此类推
	 int [] arr = new int [] {132,34,23,56,42,79,4,56,3};
	 for(int i = 0; i< arr.length-1;i++){//外层循环
	      for(int j ; j<arr.length-1-i;j++){//内层循环
		     if(arr[j]>arr[j+1]){
			   int temp  = arr[j];
			      arr[j] = arr[j+1];
				  a[j+1] =temp;
			 }
		  }
		for( a : arr){
		      System.out.println(a);
		}
	 }
	 
}

选择排序

public class Ptz { 
        ///首先选择排序是  通过一次循环 把最小(最大)的值放在数组的第一个
	public static void main(String[] args) {
	     //思路:
		 //1.定义一个下标 变量 用来存储 第一个数
		 //2.外层的循环是用来控制(内层循环)每次比较得出最小值(最大值)的次数
		 //3.内层循环用来一个一个比得出最小值(最大值)
                int [] ych =new int []{43,23,4,6,2,-1,42,4};
				  
				  for(int i=0 ; i<ych.length-1;i++){
				         int index = i ;  //存储 起始位下标
					   for(int  j =i+1 ; j<ych.length;j++){//j=i+1 是经过交换选择后,起始位
					     if(ych[j]<ych[index]){
						           index=j;  //交换得出最小值的下标
						 }
						 //交换值 
						 int temp = ych[index];
						 ych[index] = ych[j];
						 ych[j]=temp;
					   }
				  }
				System.out.println(Arrays.toString(ych));  
	}

}

插入排序(不是特别理解)

image

	1.先看第一个数,将数组划分为有序和无序部分
	2.无序部分的首个插入到有序部分  
	3.重复第2步直到无序部分全部插入有序
		void InsertSort(int a[],int l)
{
	int temp;
	int j;
	for(int i=1;i<l;i++)
	{
		if(a[i]<a[i-1])
		{
			temp=a[i];
			for(j=i-1;j>=0&&temp<a[j];j--)
			{
				a[j+1]=a[j];
			}
			a[j+1]=temp;

    }
    for(int k=0;k<l;k++)
        cout<<a[k]<<" ";
    cout<<endl;

}
}
posted @ 2022-07-15 21:45  阿萨德菩提子  阅读(23)  评论(0编辑  收藏  举报