问题
已知一个由n(设n=1000)个整数组成的线性表,试设计该线性表的一种存储结构,并设计算法,实现将n个元素中所有大于等于19的整数放在所有小于等于19的整数之后,要求算法的时间复杂度为O(n),空间复杂度为O(1)。
分析
类似20题思路,一次快速排序
代码
typedef int ElemType;
typedef struct SqList {
ElemType data[100];
int length;
}SqList;
SqList sortSqList(SqList l) {
int low = 1, high = l.length;
int pivot = 19;
int num1 = l.data[low];
while(low < high) {
while(low < high && l.data[high] >= pivot) --high;
bianli(l);
l.data[low] = l.data[high];
bianli(l);
while(low < high && l.data[low] <= pivot) ++low;
bianli(l);
l.data[high] = l.data[low];
bianli(l);
}
l.data[high] = num1;
return l;
}
源代码
http://123.206.59.223:8080/code/code/21.rar