永发信息网

快速排序代码

答案:2  悬赏:0  手机版
解决时间 2021-08-12 10:04
RT
最佳答案

c语言:


// 对一个给定范围的子序列选定一个枢纽元素,执行完函数之后返回分割元素所在的位置,
// 在分割元素之前的元素都小于枢纽元素,在它后面的元素都大于这个元素
int Partition(int array[], int low, int high)
{
    // 采用子序列的第一个元素为枢纽元素
    int pivot = array[low];


    while (low < high)
    {
        // 从后往前在后半部分中寻找第一个小于枢纽元素的元素
        while (low < high && array[high] >= pivot)
        {
            --high;
        }


        // 将这个比枢纽元素小的元素交换到前半部分
        Swap(&array[low], &array[high]);


        // 从前往后在前半部分中寻找第一个大于枢纽元素的元素
        while (low < high && array[low] <= pivot)
        {
            ++low;
        }


        // 将这个比枢纽元素大的元素交换到后半部分
        Swap(&array[low], &array[high]);
    }


    // 返回枢纽元素所在的位置
    return low;
}


// 快速排序
void QuickSort(int array[], int low, int high)
{
    if (low < high)
    {
        int n = Partition(array, low, high);
        QuickSort(array, low, n);
        QuickSort(array, n + 1, high);
    }
}
来自编程入门网: http://www.bianceng.cn/Programming/sjjg/201006/17617.htm


C#语言:


static public void fastsort(int[] array, int begin,int end)    //快速排序
    {
    if (begin < 0 || end < 0 || begin >end)
    return;
    int left = begin, right = end, temp;    //经典的快排
    temp = array[left];
    while (right != left)
    {
    while (temp < array[right] && right>left)
    right--;
    if (right > left)
    {
    array[left] = array[right];
    left++;
    }
    while (temp > array[left] && right > left)
    left++;
    if (right > left)
    {
    array[right] = array[left];
    right--;
    }
    }
    array[right] = temp;
    fastsort(array, right + 1, end);
    fastsort(array, begin, right-1);    
    }
C#语言的我只给了函数给你,如果你懂C#的话,你应该知道怎样调用吧!

全部回答
什么语言。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
别人登我号我怕他把好友删了怎么办
詹姆斯垂直起跳多高
临洮县哪有长期教街舞的?
不知道他喜欢我还是不喜欢我?怎么办才能知道
我想问一问,有没有《一起又看流星雨》这本小
dnf我的剑魂PK倒在地下以后那么长时间躺在地
为什么失去才明白?
聊城大学的电子信息工程专业怎样
怎样画好素描静物
我家炫舞挂机时,我玩穿越火线,为什么没有声
怎样点亮其它图表?
咋这么难啊
南漳县襄樊安心地板在哪里啊,我有事要去这里
云阳新闻何时播出
歌名里最后有个be的劲舞团歌的名字是什么?
推荐资讯
江汉区武汉北京同仁堂(新华路店)地址在哪里啊
富锦市佳木斯西郊卫生所地址在哪里啊
剑魂传承光剑为什么不能连招呢
玩游戏超超卡
怎么样才算是努力的学习?
请问现在要找一个人用什么方法比较好?
天龙八部手机充值卡=多少点=等多少元宝?充过
孝昌县孝感宜家日杂这个地址怎么能查询到,着
书架上共有70本书,分上下2层。如果把下层的
QQ天气预报为何不显示
梁园区商丘市第一实验小学地址是什么,有没有
上蔡县驻马店阳光保险地址在什么地方,想今天
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?