zoukankan      html  css  js  c++  java
  • 快速排序(修正)

    今天又重新写了一次快排,发现之前写的有问题

    #include <iostream>
    using namespace std;
    static int count=0;
    int find(int arr[],int left,int right)
    {
    
        int i=left,j=right-1;
        int temp=i;
        int t=arr[temp];
        while(i<=j)
        {
            while(i<=j&&arr[j]>=t)
              {
                j--;
              }
              if(i<=j&&arr[j]<t)
              {
                arr[temp]=arr[j];
                arr[j]=t;
                temp=j;
                j--;
              }
    
            while(i<=j&&arr[i]<=t)
             {
                i++;
             }
             if(i<=j&&arr[i]>t)
             {
                arr[temp]=arr[i];
                arr[i]=t;
                temp=i;
                i++;
             }
    
    
    
        }
         count++;
         cout<<count<<":";
         for(int i=left;i<right;i++)
            cout<<arr[i]<<"   ";
            cout<<endl;
           return temp;
    
    }
    void quickSort(int arr[],int left,int right)
    {
        if(left>=right)
        return;
        int temp=find(arr,left,right);
        quickSort(arr,left,temp);
        quickSort(arr,temp+1,right);
    
    }
    
    int main()
    {
        int arr[]={3,-1,45,0,21,9,8,7,32};
        cout<<"before sort:"<<endl;
        for(int i=0;i<9;i++)
           cout<<arr[i]<<"  ";
           cout<<endl;
         quickSort(arr,0,9);
         cout<<
            cout<<"after sort:"<<endl;
            for(int i=0;i<9;i++)
           cout<<arr[i]<<"   ";
           cout<<endl;
    
        return 0;
    }
    

    这个应该没问题,在确定一个分界数时一定是while(i<=j),不然会出错。

  • 相关阅读:
    bootstrap 导航学习
    算法学习1-插入排序
    管道输入输出流
    1+2*2+3*3+4*4+...+n*n计算
    maven安装for eclipse kepler
    javascript学习7-细节总结
    Git Fetch failed解决办法
    前端学习笔记
    TIOBE 编程语言排行榜
    用VS2012创建和使用WebService
  • 原文地址:https://www.cnblogs.com/xshang/p/3404239.html
Copyright © 2011-2022 走看看