顺序表划分的问题
有一个顺序表,内容是25,30,20,60,10,35,15
划分的要求是以第一个元素25为界,把上面的数据大的都放在25的后面,小的放到25的前面.
实现算法如下:
void part(sequenList &L)
{
int i,j;
DataType a;
a = L.data[0];
i = 0;
j = L.length() - 1;
while(i < j)
{
while((i < j) && (L.data[j] >= a)) j--;
L.data[i] = L.data[j];
while((i < j) && (L.data[i] <= a)) i++;
L.data[j] = L.data[i];
}
L.data[i] = a;
}
使用上面的函数可以实现划分的要求.
有下面的问题不太明白:
执行L.data[i] = L.data[j];后L.data[i]的值已经被替换了,也就是说在顺序表中L.data[i]的值是不是已经不存在了?
那为什么还能正确划分呢?