数组分隔

来源:互联网 发布:数据库的接口 编辑:程序博客网 时间:2024/04/30 00:25

欢迎大家光顾论坛 http://jobexam.net

【题目】有一个顺序表L,其元素为整型数据,设计一个算法,将L中所有小于表头的元素的整数放在前半部分,大于表头元素的整数放在后半部分。

【解析】这道其实就是快速排序的一趟排序。下面的代码是算法导论里面使用的。我觉得很好。

?
代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "Partition.h"
#include <iostream>
usingnamespace std;
voidpartition(intA[], intlength)
{
    inttmp;
    intj = 0;
    for(inti=1; i<length; i++)
    {
        if(A[i] <= A[0])
        {
            tmp = A[j+1];
            A[j+1] = A[i];
            A[i] = tmp;
            j++;
        }
    }
}
 
intmain(char**argv, intargc)
{
    intA[] = {20,10,5,11,25,3,22,7};
    partition(A, 8);
    for(inti=0; i<8; i++)
    {
        cout << A[i] << " ";
    }
    system("PAUSE");
    return0;
}