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),不然会出错。

  • 相关阅读:
    shell基础
    函数属性
    this的使用
    循环
    正则表达式中的方法
    判断是不是数组
    ECMAScript5中数组方法
    ECMAScript3中数组方法
    break和continue、return的区别
    用来枚举属性的对象工具函数
  • 原文地址:https://www.cnblogs.com/xshang/p/3404239.html
Copyright © 2011-2022 走看看