当前位置: 代码迷 >> C语言 >> [原创]排序任意一列整数(C原代码供大家使用)
  详细解决方案

[原创]排序任意一列整数(C原代码供大家使用)

热度:227   发布时间:2007-08-05 11:50:43.0
[原创]排序任意一列整数(C原代码供大家使用)
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: C爷们 E-mail:kezi1987@126.com QQ:263877792
*/ 时间: 2007-8-5 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
此程序是使一列整数数由大到小重新排序.
当输入任意个数的一列整数数后,程序会自动检验数列的大小,并以最快的读取速度用起泡法排序.但输入的数据要介于正负32767之间,个数小于200(当大于200时,见程序第三行说明),点击回车输入每个数.下面是这个程序的源代码,欢迎大家对此程序进行改进:
#include<stdio.h>
void main()
{
int a[200],x,n;   /*200是未排数的最大个数,可以修改*/
register int i=0,j;
  for(printf("lank numbers from big to smell\nafter typed each number,type \"Enter\".by this way,you can enter the number\neach one must be smller than32767 and when you want to end up entering you can press 32767 and then press \"enter\".\nyour numbers:\n");printf("the %d number is ",i+1),scanf("%d",a+i),a[i]!=32767;i++)
n=i+1;
for(i=0;i<=n-2;i++)
for(j=0;j<=n-i-1;j++)
if (a[j-1]<a[j])
{x=a[j];
a[j]=a[j-1];
a[j-1]=x;
}
printf("what you want is ");
printf("\n");
for(i=0;i<=n-1;i++)
printf("the %d=\'%d\' ",i+1,a[i]);
}

[此贴子已经被作者于2007-8-5 14:17:09编辑过]

搜索更多相关的解决方案: 整数  代码  中国  

----------------解决方案--------------------------------------------------------

唉,不就起泡排序嘛.有什么好讲的,很多书都有啊...还有这算法不是你想的吧,作者不是你.


----------------解决方案--------------------------------------------------------
就是
----------------解决方案--------------------------------------------------------
精神可嘉,值得鼓励,希望能写出一些有使用价值的DD
----------------解决方案--------------------------------------------------------
for(i=0;i<=n-2;i++)
for(j=0;j<=n-i-1;j++)
if (a[j-1]<a[j])
{ x=a[j];
a[j]=a[j-1];
a[j-1]=x;
}
这段经典代码,闭着眼睛也写出来了

所谓 以最快的读取速度用起泡法排序
最快在哪里?
----------------解决方案--------------------------------------------------------
整的挺隆重
----------------解决方案--------------------------------------------------------

冒泡排序时间效率比较低,请楼主看看这个吧
void qsort(int key[],int low,int high)
{ /*快速排序*/
int i=low,j=high,tag;

if (low<high)
{
tag=key[low];
do
{
while (key[j]>tag && i<j) j--;

if (i<j)
{
key[i]=key[j];
i++;
while (key[i]<=tag && i<j) i++;
if (i<j)
{
key[j]=key[i];
j--;
}
}
}while (i<j);

key[i]=tag;
qsort(key,low,j-1);
qsort(key,i+1,high);
}
}


----------------解决方案--------------------------------------------------------
你们别这样好吧,俺是初学者,哪像你们这些老鸟。你们应该多励鼓励我啊。
----------------解决方案--------------------------------------------------------
自己第一次作个有用的程序,觉得有点用就传上来给你们用,还遭到这么多批判。
虽然里面的有些模块式早就有的,但这个程序是我做的,当然算是原创。就像牛顿第一定律是前人试验的结论但是牛顿总结了一下,就是他自己的原创了。
----------------解决方案--------------------------------------------------------
以下是引用jackys2006在2007-8-5 18:59:12的发言:
for(i=0;i<=n-2;i++)
for(j=0;j<=n-i-1;j++)
if (a[j-1]<a[j])
{ x=a[j];
a[j]=a[j-1];
a[j-1]=x;
}
这段经典代码,闭着眼睛也写出来了

所谓 以最快的读取速度用起泡法排序
最快在哪里?

for(j=1;j<=n-i;j++)
j=0的话 j-1=?


----------------解决方案--------------------------------------------------------
  相关解决方案