zoukankan      html  css  js  c++  java
  • [数据结构和算法]快速排序笔记

    特点:
    1.是冒泡的改进
    2.是一个递归的过程
    3.不稳定

    4.时间复杂度:O(nlogn)

    设要排序的数组是A[0]...A[n-1],首先取数组的第一个数作为关键数据,
    然后将所有比它小的数都放到它的前面,比他大的都放到他的后面,这个过程被称为一趟快速排序

    算法步骤:
    1.设置两个变量i,j,排序开始i = 0, j = N-1;
    2.以第一个数组元素作为关键字,Key = A[0];
    3.从J开始向前搜索,即由后开始向前搜索j--, 找到第一个小于key的值A[j],将A[j]赋值给A[i]
    4.从I开始向后搜索,即由前开始向后搜搜i++, 找到第一个大于key的值A[i],将A[i]赋值给A[j]
    5.重复3,4步,直到i=j;
    (3,4步中,没有找到符合条件的值,即3中A[j]不小于key,4中A[i]不大与key的时候改变j,i的值,
    使得j=j-1 , i = i +1,直至找到为止,找到符合条件的值,进行交换的时候i,j位置不变
    i==j这一个过程一定正好是i+或者j-完成时候,此时令循环结束)

    package src;
    
    public class QSort 
    {
    
        /**
         * @param args
         */
        public static void main(String[] args) 
        {
            // TODO 自动生成方法存根
            quicksort qs = new quicksort();
            int data[] = {44,22,2,32,54,22,88,77,99,11};
            qs.data = data;
            qs.sort(0, qs.data.length-1);
            qs.display();
        }
    
    }
    
    
    class quicksort
    {
        public int data[];
        
        private int partition(int sortArray[],int low,int hight)
        {
            int key = sortArray[low];
            
            while(low<hight)
            {
                while(low<hight && sortArray[hight]>=key)
                    hight--;
                sortArray[low] = sortArray[hight];
                
                while(low<hight && sortArray[low]<=key)
                    low++;
                sortArray[hight] = sortArray[low];
            }
            sortArray[low] = key;
            return low;
        }
        
        public void sort(int low,int hight)
        {
            if(low<hight)
            {
                int result = partition(data,low,hight);
                sort(low,result-1);
                sort(result+1,hight);
            }
            
        }
        
        public void display()
        {
            for(int i=0;i<data.length;i++)
            {
                System.out.print(data[i]);
                System.out.print(" ");
            }
        }
    }
  • 相关阅读:
    关于工作
    5种风格的 jQuery 分页效果【附代码】
    轮播图jquery
    Microsoft.AspNetCore.Localization 自定义多语言获取
    10-微信小程序 WXS
    9-微信小程序引用
    8-微信小程序 事件
    7-微信小程序 模板(template)
    6-微信小程序 条件渲染 wx:if
    5-微信小程序 列表渲染 wx:for
  • 原文地址:https://www.cnblogs.com/hellenism/p/3749670.html
Copyright © 2011-2022 走看看