二分查找算法递归实现&&快速排序算法实现

xiaoxiao2021-02-28  101

class BinarySearch{ public static void main(String[] args){ int[] arr={1,5,7,9,10}; int index=binarySearch(arr,0,arr.length,10); if(index!=-1){ System.out.println("找到值的索引为:"+index); }else{ System.out.println("没有找到值!"); } } public static int binarySearch(int[] arr,int start,int end,int num){ if(start>end){ return -1; }else{ int mid=(start+end)/2; if(num<arr[mid]){ return binarySearch(arr,start,mid-1,10); }else if(num>arr[mid]){ return binarySearch(arr,mid+1,end,10); }else{ return mid; } } } }

二、快速 排序基本算法

1、基本思想:首先选一基准点,将待排序记录划分为独立的两部分,左侧记录的关键码均小于等于轴值,右侧记录的关键码均大于等于轴值,之后再分别对这两个部分重复上述过程,直到整个序列有序为止。

2、代码如下:

class QuickSort{ public static void main(String[] args){ int[] arr={49,38,65,97,76,13,27,49}; quickSort(arr); print(arr); } public static void print(int[] arr){ for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } System.out.println(); } public static void quickSort(int[] arr){ sort(arr,0,arr.length-1); } public static void sort(int[] arr,int low,int high){ if(low>high){ return; } int i=low; int j=high; int index=arr[i]; //用第一个值作为基准值 while(i<j){ while(i<j&&arr[j]>=index)j--;//如果没有比关键值小的,比较下一个, //直到有比关键值小的交换位置,然后又从前往后比较 if(arr[j]<index){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } while(i<j&&arr[i]<=index)i++; if(arr[i]>index){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } sort(arr,low,i-1); //对低子表进行递归排序 sort(arr,i+1,high); // 对高子表进行递归排序 } }

转载请注明原文地址: https://www.6miu.com/read-46606.html

最新回复(0)