java 排序: 只要上网搜索。基本是铺天盖地的资源。
但是,我个人觉得很多人的资源,不如我们自己理解的简单。
特别是越厉害的哥们,写起代码就越复杂,
而我们有时需要的是能理解的技术,而不是复杂的技术大眼瞪小眼。
package cc.cm.util;
import java.lang.reflect.Array;import java.util.ArrayList;
public class Arraytest{
/**二分法查找 必须是一组有序的数组 * @param args */ public static void main(String[] args) { int a[]={1,3,5,7,10}; int index=BinartSearch(a, 5); System.out.println("5元素在:"+index +"位"); int b[]={12,23,5,27,10,15,82,45,44}; QuickSork(b,0,8); for (int i = 0; i < b.length; i++) { System.out.print(b[i]+" "); } } public static int BinartSearch(int array[],int T){ int low,high,mid; low=0; high=array.length-1; while(low<=high){ mid=(low+high)/2; if(array[mid]<T){ low=mid+1; } if(array[mid]>T){ high=mid-1; } else { return mid; } } return -1; } /** * 快速排序法 * @param array数组的 * @param left最左边的位置 * @param right最右边的位置 基本思想是: 从数组中取出一个元素作为基准值 把其他元素分为两组: “小的”是那些小于基准值的元素。 “大的”是那些大于基准值的元素, 递归对这两个组做排序。 快速排序快速的原因在于:一旦知道了某个元素比基准值小,它就不需要在与那些大的元素比较。 而大的元素也不需要在与小的元素比较,这个性质使快速排序比简单排序、冒泡排序快的多。 时间复杂度:O(nlogn) */ public static void QuickSork(int[] array,int left,int right){ if(array.length<=0){ return ; } if(left>=right){ return ; } int last; last=left;//作为一个比基准值得下标 //循环遍历找出这个数组小于比基准值小的元素的个数。进行统计 for (int i = left+1; i <= right; i++) { if(array[i]<array[left]){ Exchange(array,++last,i); } } Exchange(array, left, last); QuickSork(array,left,last-1); QuickSork(array,last+1,right); } /** * 交换数组的两个元素 * @param a * @param i * @param j */ public static void Exchange(int[] a,int i,int j){ int temp; temp=a[i]; a[i]=a[j]; a[j]=temp; }}
转载于:https://www.cnblogs.com/harry-Consonance/p/6594787.html
相关资源:JAVA上百实例源码以及开源项目