算法设计:设有一组初始记录关键字序列(K 1 ,K 2 ,...,K n ),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i ,右半部分的每个关键字均大于等于K i 。
Void quickpass(int r[], int s,int t) 这里定义的是s,t代表什么
{
int i=s, j=t, x=r[s];
while(i<j){
while (i<j &&r[j]>x) j=j-1;
if (i<j)
{r[i]=r[j];i=i+1;}
while (i<j && r[i]<x) i=i+1;
if (i<j) {
r[j]=r[i];j=j-1;}
}
r【i】=x;
}
这个题目的意思应该是让你在规定时间复杂度O(n)以内对序列进行排序,答案用的快速排序,s,t应该是代表的第一个和最后一个数
(个人理解,仅供参考)
哦对,补充下,题目里没有让排序,这里只是用了快速排序的划分