标题:用二维数组对每行的快速排序
取消只看楼主
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
结帖率:100%
已结贴  问题点数:20 回复次数:4 
用二维数组对每行的快速排序
 例如a[5][2]={{4,1},{6,8},{3,2},{1,5},{10,3}};
  (只对每行第0列的数进行快速排序)
  则输出:1 5
   3 2
   4 1
   6 8
   10 3
  本人的快速排序如下:
  
  void Quick_Sort(int R[],int left, int right)
  {//用递归方法把R[left]至R[right]的记录进行快速排序
  int i=left,j=right,k;
  int temp;
  if(left<right)
  {
   temp=R[left]; //将区间的第1个记录作为基准置入临时单元中
   while(i!=j) //从序列两端交替向中间扫描,直至i=j为止
   {
   while(j>i&&R[j]>=temp)
   j--; //从右向左扫描,找第1个关键字小于temp.key的R[i]
   if(i<j) //若找到这样的R[j],将R[j]存放到R[i]处
   {
   R[i]=R[j];
   i++;
   }
   while(i<j&&R[i]<=temp)
   i++; //从左向右扫描,找第1个关键字大于temp.key的R[i]
   if(i<j) //找到则将R[i]存放到R[i]处
   {
   R[j]=R[i];
   j--;
   }
   }
   R[i]=temp; //将基准放入其最终位置
   Quick_Sort(R,left,i-1); //对基准前面的记录进行递归排序
   Quick_Sort(R,i+1,right); //对基准后面的记录序列进行递归排序
  }
  }
搜索更多相关主题的帖子: 每行 
2009-10-27 17:12
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
得分:0 
本人的快速排序啊,
2009-10-27 23:25
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
得分:0 
回复 5楼 xiefeng122
快速的平均时间复杂度不是很低的O(nlog2 n)吗!在排序中,应该算是较低的了吧!
 那以贵人的实际有应该用那些排序或方法啊?请赐教!
2009-10-28 13:52
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
得分:0 
回复 4楼 语言
但如果的数组的很大,这好像就行不通了吧!
  那样时间复杂度会很大的吧!不知道鄙人的说法对不对,谢了!
2009-10-28 13:55
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
得分:0 
回复 9楼 xiefeng122
哈哈!我给出的例子,用快速排序算是大材小用了!可是要是用数据量是数组a[n][2],n的值很大很大,会用什么好啊!
2009-10-28 23:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-290129-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.430845 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved