• 排序算法之快速排序(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;

    } 

  • 相关阅读:
    面试笔记1
    Hello World!!
    百度地图API JavaScript显示人员分布信息
    MUI Picker选择器 自定义省市地址三级联动
    【Unity】Lua热重载
    【临时存放】变量配置
    SVN代码管理出现注册错误
    javaweb学习
    微信应用号(微信小程序)开发教程
    shell脚本时间运算
  • 原文地址:https://www.cnblogs.com/yunfei181/p/2128995.html
Copyright © 2020-2023  润新知