zoukankan      html  css  js  c++  java
  • 排序算法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
  • 相关阅读:
    多线程
    事务的概念与四大特性(ACID)
    Error和Exception的区别
    运算符的使用与注意事项(二)
    运算符的使用与注意事项(一)
    GOJS使用--前端拓扑图
    python算法实现分治法demo
    MySQL主从复制配置
    MySQL锁
    show profile查看SQL执行生命周期
  • 原文地址:https://www.cnblogs.com/littlewriter/p/5788711.html
Copyright © 2011-2022 走看看