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;

    } 

  • 相关阅读:
    右键菜单:锁到任务栏丢失 修复
    检测到鼠标时自动禁用触摸板 (注:仅适用于个别笔记本)
    清除右键菜单CMD入口
    VBS编辑字段
    VBS创建数据表
    VBS创建数据库
    QTP操作论坛回复编辑框----webelement
    数字排序
    对应键盘的ASCII码(备忘)
    将字符串打乱输出
  • 原文地址:https://www.cnblogs.com/yunfei181/p/2128995.html
Copyright © 2011-2022 走看看