zoukankan      html  css  js  c++  java
  • 【快速排序】算法实现

    快速排序,是分治递归的应用。算法的时间复杂性为:O(nlogn)。算法的递归深度接近于logn。因此,所需要的工作单元为O(logn)。

    //快速排序
    #include<iostream.h>
    int count=0;
    void swap(int &a,int &b)
    {
        
    int temp;
        temp
    =a;
        a
    =b;
        b
    =temp;
    }
    int split(int array[],int low,int high)
    {
        
    int i=low;//保存枢点元素的位置,初始值为low
        int j;
        
    int x=array[low];
     
        
    for(j=low+1;j<=high;j++)
        {
            
    if(array[j]<=x)
            {
                i
    ++;
                
    if(i!=j)
                {
                    swap(array[i],array[j]);
                }
            }
        }
        swap(array[low],array[i]);
        
    return i;
    }
    void print(int array[],int n)
    {  
        
    for(int i=0;i<8;i++)
        {
            cout
    <<array[i]<<" ";
        }
        cout
    <<endl;
    }
    void quick_sort(int array[],int low,int high)
    {
        
    int k;
        
    if(low<high)
        {
            k
    =split(array,low,high);     
            quick_sort(array,low,k
    -1); 
            quick_sort(array,k
    +1,high); 
        }
    }
    void main()
    {
        
    int array[]={5,8,4,9,3,6,7,2};
        quick_sort(array,
    0,7);     
        print(array,
    7);
    }
  • 相关阅读:
    C# 之 获取文件名及拓展名
    C# 之 日常积累(二)
    C# 之 OpenFileDialog的使用
    Linux系统中,main函数的执行过程
    linux线程的实现
    linux内核--进程与线程
    内核线程和进程的区别
    软中断和硬中断
    Linux 2.4.x内核软中断机制
    几种USB控制器类型:OHCI,UHCI,EHCI,xHCI
  • 原文地址:https://www.cnblogs.com/wintergrass/p/2031023.html
Copyright © 2011-2022 走看看