标题:用二维数组对每行的快速排序
只看楼主
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
结帖率:100%
已结贴  问题点数:20 回复次数:13 
用二维数组对每行的快速排序
 例如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
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
这个是快速排序   ?????

—>〉Sun〈<—
2009-10-27 19:20
aihuaqiong
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-10-21
得分:0 
本人的快速排序啊,
2009-10-27 23:25
语言
Rank: 2
等 级:论坛游民
帖 子:17
专家分:19
注 册:2009-10-24
得分:0 
鄙人 觉得还不如用这个实在点
   for(i=0;i<n;i++)
            for(j=0;j<m;j++)
                scanf("%d",&a[i][j]);
            for(i=0;i<n-1;i++)
            { if(a[i][0]>a[i+1][0])
                    for(j=0;j<m;j++)
                    { t=a[i][j];
                      a[i][j]=a[i+1][j];
                      a[i+1][j]=t;
                    }

[ 本帖最后由 语言 于 2009-10-28 12:40 编辑 ]
2009-10-28 12:21
xiefeng122
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:126
专家分:139
注 册:2009-4-1
得分:0 
楼上的算法复杂度太大,对付小的问题还行,但应用到实际中,根本不适用
2009-10-28 12:59
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
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
得分:0 
我觉得用指针数组加上真正的快速排序会好点.
int (*p)[2]?好久不用快忘了,
2009-10-28 14:09
xiefeng122
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:126
专家分:139
注 册:2009-4-1
得分:0 
回的4楼的,快排的算法复杂是很低的了,你的算法没什么问题,只是这题目很水···
2009-10-28 14:09
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.017736 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved