public class quickSort { public static void println(int[] num){ for(int i=0;i<num.length;i++){ System.out.println(num[i]); } } //快速排序 public static void quick_sort(int s[], int l, int r) { if (l < r) { int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] >= x) { // 从右向左找第一个小于x的数 j--; } if(i < j){ s[i++] = s[j]; } while(i < j && s[i] < x){ // 从左向右找第一个大于等于x的数 i++; } if(i < j){ s[j--] = s[i]; } } s[i] = x; quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r); } } public static void main(String[] args){ int[] num={10,9,8,7,6,5,4,3,2,1}; quick_sort(num,0,9); println(num); } }
public class minValArray { public static int minValArray(int[] num){ int length=num.length; //当数组元素为空 if(num.length<=0){ System.out.println("Invalid Array"); return -1; } int p1=0,p2=length-1; int res=p1; //当左指针大于右指针 while(num[p1]>num[p2]){ if(p1+1==p2){ res=p2; break; } int mid=(p1+p2)/2; if(num[mid]>num[p1]){ p1=mid; } if(num[mid]<=num[p2]){ p2=mid; } } //当左指针等于右指针 if(num[p1]==num[p2]){ for(int i=1;i<length;i++){ if(num[res]>num[i]){ res=i; } } } return num[res]; } public static void main(String[] args){ int[] num=new int[]{3,4,5,1,2}; int[] num2=new int[]{1,2,3,4,5}; int[] num3=new int[]{1,0,1,1,1}; int[] num4=new int[]{}; int[] num5=new int[]{1,2,2,0,0}; System.out.println(minValArray(num5)); } }
原文:https://www.cnblogs.com/ak918xp/p/14434239.html