设有一个数组中存放了一个无序的关键字序列K1,K2,…,Kn。现要求将Kn放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过n。

admin2019-08-15  27

问题 设有一个数组中存放了一个无序的关键字序列K1,K2,…,Kn。现要求将Kn放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过n。

选项

答案 int Partition(RecType K[ ],int m,int n){ //交换记录子序列K[1..n]中的记录,使枢轴记录到位,并返回其所在位置 //此时,在它之前(后)的记录均不大(小)于它 int i=m,j=n,K[0]=K[j],x=K[j].key; while(i<j){ while(i<j&&K[i].key<=x)i++; if(i<j)K[j]=K[i]; while(i<j&&K[j].key>=x)j一一; if(i<j)K[i]=K[j]; }//while K[i]=K[0]; return i: } 提示:此题考查的知识点是快速排序的思想。以Kn为枢轴的一趟快速排序。以最后一个关键字为枢轴先从前向后再从后向前快速排序。

解析
转载请注明原文地址:https://kaotiyun.com/show/XKCi777K
0

最新回复(0)