zoukankan      html  css  js  c++  java
  • 排序算法之快速排序(QuickSort)

        快速排序又称分区交换排序,是目前已知的平均速度最快的一种排序算法,它是对冒泡排序的一种改进。该算法的基本思想是:从待排序的n个记录中任意选取一个记录R(通常是序列中的第一个元素)作标准,调整序列中各个记录的位置,使R前面的记录的关键字都比它小,后面的关键字都比它大,这样的一个过程称为一次快速排序。然后对两边的记录再同样分别进行这样一个过程,直到各个子序列的长度为1时,排序完毕。

        算法如下:

    #include "stdafx.h"

    void QuickSort(int a[],int low,int high)
    {  
        
        
    int k=low;//保存当前空位
        int i=low,j=high;
        
    int key=a[low];
        
        
    while(i<j)
        {       
            
            
    while(i<j)
            {
                
    if(a[j]<key)
                {
                    a[k]
    =a[j];
                    k
    =j;
                    
    break;
                }        
                j
    --;
            }
            
            
    while(i<j)
            {
                
    if(a[i]>key)
                {
                    a[k]
    =a[i];
                    k
    =i;
                    
    break;
                }
                i
    ++;
            }
        }
        
        a[k]
    =key;
        
        
    if(low<k-1) QuickSort(a,low,k-1);
        
    if(high>k+1) QuickSort(a,k+1,high);
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
        
    int a[]={21,56,23,90,25,76,19,44,98,8,77,0};
        QuickSort(a,
    0,11);
        
    for(int i=0;i<12;i++)
        {
            printf(
    "%d,",a[i]);
        }
        getchar();
        
    return 0;

    } 

  • 相关阅读:
    H5学习的第三周
    2017.3.12 H5学习的第一周
    js中比较实用的函数用法
    JS学习中遇到的一些题目
    H5学习第四周
    idea快捷键
    中国国内可用API合集
    ssm整合 idea+maven版
    Dubbo的使用及原理浅析
    $.extend 和$.fn.extend的区别
  • 原文地址:https://www.cnblogs.com/yunfei181/p/2128995.html
Copyright © 2011-2022 走看看