排序算法Java版

选择排序:
public static void selectSort(int[]a)
{
    int minIndex=0;
    int temp=0;
    if((a==null)||(a.length==0))
        return;
    for(int i=0;i<a.length-1;i++)
    {
        minIndex=i;//无序区的最小数据数组下标
        for(intj=i+1;j<a.length;j++)
        {
            //在无序区中找到最小数据并保存其数组下标
            if(a[j]<a[minIndex])
            {
                minIndex=j;
            }
        }
        if(minIndex!=i)
        {
            //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。
            temp=a[i];
            a[i]=a[minIndex];
            a[minIndex]=temp;
        }
    }
}
    
插入排序:
//依次元素加入元素插入到已排好的序列中 private static int[] insertSort(int []arr) { if (arr==null||arr.length<2) { return arr; } for (int i = 0; i < arr.length-1; i++) { for (int j =i+1; j >0; j--) { if (arr [j]>=arr[j-1]) { break; } else { int temp =arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } } return arr; }
快速排序:
private
void swap(int x,int y) { int temp=array[x]; array[x]=array[y]; array[y]=temp; } private void quick_sort_recursive(int start,int end) { if (start>=end) return; int mid=array[end]; int left=start; int right=end-1; while (left < right) { while (array[left] < mid && left < right) left++; while (array[right] >= mid && left < right) right--; swap(left, right); //交换两个数在数组中的位置 } //最终将基准数归位 if (array[left] >= array[end]) swap(left, end); else left++; quick_sort_recursive(start, left - 1);//继续处理左边的,这里是一个递归的过程 quick_sort_recursive(left + 1, end);//继续处理右边的 ,这里是一个递归的过程 }
该算法不太好理解,详细分析可以参考:http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html
原文地址:https://www.cnblogs.com/littlewriter/p/5788711.html