zoukankan      html  css  js  c++  java
  • C#之快速排序易产生错误代码对比

    public void QuickSort(int fore, int last)  //快速排序算法                  
            {
                int begin = fore;
                int end = last;
                int tem = data[fore];  //基准元素
                while (begin != end)   //当左右两端扫描未碰头时
                {
                    if (data[end] < tem)  //当基准元素后面的元素大于基准元素后
                    {
                        data[begin] = data[end];
                        while (begin != end)
                        {
                            if (data[begin] > tem)
                            {
                                data[end] = data[begin];
                                break;
                            }
                            else
                            {
                                begin++;  //向右挪动
                            }
                        }
                    }
                    //****************************
                    else                        **
                    {                           **  
                        end--;  //向左挪动      **  
                    }                           **  
                    //**************************** 
                    // 改成 
                    //end--; 
                  /*
                     会产生错误,因为这样 end-- 语句必执行,而    
                     当上面的while语句执行完并跳出来后执行此语句使得本已满足  
                     begin!=end 的条件变成 end<begin 从而照样满足 begin!=end,
                     while循环继续执行导致数组下标越界  
                  */                    
    
                }
                data[begin] = tem;
                if (fore !=begin)
                {
                    int i = fore;
                    int j= begin - 1;
                    QuickSort(i,j);
                }
                if (begin != last)
                {
                    int i= begin + 1;
                    int j = last;
                    QuickSort(i, j);
                }
            }
        }

  • 相关阅读:
    计算机基础(7)
    计算机基础(6)
    计算机基础(5)
    计算机基础(4)
    计算机基础(3)
    计算机基础(2)
    计算机基础(1)
    数组、函数
    js基础知识
    随笔3
  • 原文地址:https://www.cnblogs.com/zztong/p/6695180.html
Copyright © 2011-2022 走看看