快速排序

来源:互联网 发布:那个网站足彩数据最全 编辑:程序博客网 时间:2024/05/16 14:32

 public static void sortQuick(int[] sortArray, int left, int right)
        {
            int l = left;
            int r = right;
            int indexData = sortArray[l];
            int index = l;
            while (l < r)
            {
                if (index == l)
                {
                    while (r > l)
                    {
                        if (sortArray[r] >= indexData)
                        {
                            r--;
                        }
                        else
                        {
                            sortArray[l] = sortArray[r];
                            sortArray[r] = indexData;
                            index = r;
                            break;
                        }
                        if (sortArray[r] == indexData)
                        {
                            index = r;
                            if (r > l)
                            {
                                r--;
                            }
                        }
                    }
                }
                else if (index == r)
                {
                    while (l < r)
                    {
                        if (sortArray[l] <= indexData)
                        {
                            l++;
                        }
                        else
                        {
                            sortArray[r] = sortArray[l];
                            sortArray[l] = indexData;
                            index = l;
                            break;
                        }
                        if (sortArray[l] == indexData)
                        {
                            index = l;
                            if (l < r)
                            {
                                l++;
                            }
                        }
                    }
                }
            }
            if (index > left)
            {
                sortQuick(sortArray, left, index - 1);
            }
            if (right > index)
            {
                sortQuick(sortArray, index + 1, right);
            }
        }