折半插入排序
public static void insertHaltSort(int[] array) {
int tem,j,i,l,h,mid;//i指的是无序区的第一个元素,j指的是有序区的最后一个元素
for (i = 1; i < array.length; i++) {
tem=array[i];
j=i-1;l=0;h=j;
while(l<=h) {
mid=(l+h)/2;
if(array[mid]<tem)
l=mid+1;
else
h=mid-1;
}
while(j>=h+1) {
array[j+1]=array[j];
j--;
}
array[h+1]=tem;
}
}
快速排序
public static void quickSort(int[] arr,int s,int t) {
//s代表排序开始的位置,t代表排序结束的位置
int i=s,j=t;//i从左开始扫描,j从右开始扫描
int tem;
if(s<t) {
tem=arr[i];
while(i!=j) {
while(i<j&&arr[j]>=tem)//找到比基准tem小的数的位置
j--;
arr[i]=arr[j];
while(i<j&&arr[i]<=tem)//找到比基准tem大的数的位置
i++;
arr[j]=arr[i];
}
arr[i]=tem;//基准在排序的位置
quickSort(arr, s, i-1);
quickSort(arr,i+1,t);
}
}
直接选择排序
public static void selectSort(int[] arr) {
int i,j,k,tem;//i指向无序区的第一个元素,j指向无序区的第二个元素,k指向无序区最小的元素
for(i=0;i<arr.length;i++) {
k=i;
for(j=i+1;j<arr.length;j++)
if(arr[j]<arr[k]) {
k=j;
if(i!=k) {
tem=arr[i];
arr[i]=arr[k];
arr[k]=tem;
}
}
}
}