CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

小弟初学C语言,写了一个排序程序,请高手指点。

楼主Dan1980()2005-09-24 00:53:13 在 C/C++ / C语言 提问

小弟初学,没有参考别的程序,自己写的,不知合不合理?  
   
  #include   <stdio.h>  
   
  #define   SIZE   5  
   
  sort_array(int*,   int);  
   
  main()  
  {  
      int   array[SIZE];  
      int   i;  
   
      printf("please   enter   %d   numbers\n",   SIZE);  
      for(i   =   0;   i   <   SIZE;   i++)  
          scanf("%d",   array   +   i);  
   
      printf("\nbefore   sorted...\n");  
      for(i   =   0;   i   <   SIZE;   i++)  
          printf("%d   ",   *(array   +   i));  
      printf("\n");  
   
      sort_array(array,   SIZE);  
   
      printf("\nafter   sorted...\n");  
      for(i   =   0;   i   <   SIZE;   i++)  
          printf("%d   ",   *(array   +   i));  
      printf("\n");  
  }  
   
  sort_array(int   *array,   int   length)  
  {  
      int   i,   j,   temp;  
      for(i   =   length   -   1;   i   >   0;   i--)  
      {  
          for(j   =   length   -   1;   j   >   length   -   i   -   2;   j--)  
          {  
   
              /*if   the   second   element   is   smaller,  
                put   it   one   position   ahead*/  
   
              if(*(array   +   j)   <   *(array   +   j   -   1))  
              {  
                  temp   =   *(array   +   j);  
                  *(array   +   j)   =   *(array   +   j   -   1);  
                  *(array   +   j   -   1)   =   temp;  
              }  
          }  
      }  
  }  
   问题点数:50、回复次数:12Top

1 楼llf_hust()回复于 2005-09-24 00:57:14 得分 10

#include   <stdio.h>  
   
  #define   SIZE   5  
   
  void     sort_array(int*,   int);  
   
  int   main()  
  {  
      int   array[SIZE];  
      int   i;  
   
      printf("please   enter   %d   numbers\n",   SIZE);  
      for(i   =   0;   i   <   SIZE;   i++)  
          scanf("%d",   array   +   i);  
   
      printf("\nbefore   sorted...\n");  
      for(i   =   0;   i   <   SIZE;   i++)  
          printf("%d   ",   *(array   +   i));  
      printf("\n");  
   
      sort_array(array,   SIZE);  
   
      printf("\nafter   sorted...\n");  
      for(i   =   0;   i   <   SIZE;   i++)  
          printf("%d   ",   *(array   +   i));  
      printf("\n");  
      return   0;  
  }  
   
  void   sort_array(int   *array,   int   length)  
  {  
      int   i,   j,   temp;  
      for(i   =   length   -   1;   i   >   0;   i--)  
      {  
          for(j   =   length   -   1;   j   >   length   -   i   -   1;   j--)  
          {  
   
              /*if   the   second   element   is   smaller,  
                put   it   one   position   ahead*/  
   
              if(*(array   +   j)   <   *(array   +   j   -   1))  
              {  
                  temp   =   *(array   +   j);  
                  *(array   +   j)   =   *(array   +   j   -   1);  
                  *(array   +   j   -   1)   =   temp;  
              }  
          }  
      }  
  }  
  Top

2 楼xiaoyaxin()回复于 2005-09-24 04:15:39 得分 5

这里有一个很好的例子:  
   
  #include   <iostream>  
  #include   <vector>  
  #include   <algorithm>  
  #include   <iterator>  
   
  using   namespace   std;  
   
  void   main(void)  
  {  
    typedef   vector<int>         int_vector;  
    typedef   istream_iterator<int>         istream_itr;  
    typedef   ostream_iterator<int>         ostream_itr;  
    typedef   back_insert_iterator<   int_vector   >   back_ins_itr;  
   
    //   STL中的vector容器  
    int_vector   num;  
   
    //   从标准输入设备读入整数,    
    //   直到输入的是非整型数据为止  
    copy(istream_itr(cin),   istream_itr(),   back_ins_itr(num));  
   
    //   STL中的排序算法  
    sort(num.begin(),   num.end());  
   
    //   将排序结果输出到标准输出设备  
    copy(num.begin(),   num.end(),   ostream_itr(cout,   "\n"));  
  }  
   
  Top

3 楼Panther105(猎豹)回复于 2005-09-24 07:59:50 得分 5

自定义函数最好放在主程序外,这样可以方便其他的程序使用该函数.  
  使用冒泡法排序应注意每次循环的末元素应该从首元素开始.如你的sort_array(int   *array,   int   length)函数中  
                                for(j   =   length   -   1;   j   >   length   -   i   -   2;   j--)  
   
  j应该为j   >   length   -   i   -   1  
  Top

4 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2005-09-24 08:06:09 得分 5

void   sort_array(int   *array,   int   length)  
  {  
      int   i,   j,   temp;  
      for(i   =   length   -   1;   i   >   0;   i--)  
      {  
          for(j   =   length   -   i;   j   >   0;   j--)//   修改一下~~  
          {  
   
              /*if   the   second   element   is   smaller,  
                put   it   one   position   ahead*/  
   
              if(*(array   +   j)   <   *(array   +   j   -   1))  
              {  
                  temp   =   *(array   +   j);  
                  *(array   +   j)   =   *(array   +   j   -   1);  
                  *(array   +   j   -   1)   =   temp;  
              }  
          }  
      }  
  }  
  建议楼主看看数据结构关于排序那个章节~~~  
  Top

5 楼jsjjms(专心研究嵌入式)回复于 2005-09-24 14:03:23 得分 2

写得不错,鼓掌:-)  
  Top

6 楼jixingzhong(瞌睡虫·星辰)回复于 2005-09-24 14:17:26 得分 5

呵呵       相当不错   !!     鼓掌  
   
  几个小细节很注意,   代码的风格也不错   ~     ,以后继续保持吧   ~  
  起泡会了,   可以看看稍微好写的算法吧,   选择和它差不多,   估计你应该会了   ,   可以学学   快排之类的高效率算法     ...  
   
  继续努力吧   ~Top

7 楼syril2005(syril2005)回复于 2005-09-25 09:02:47 得分 3

第二人复怎么看不懂,用到了很多函数吧,这些库函不是很常用Top

8 楼syril2005(syril2005)回复于 2005-09-25 09:04:39 得分 4

以上基本思想应该都是相同的,没有多大的分别,一般都能够实现Top

9 楼kprzen(小康)回复于 2005-09-25 15:46:05 得分 4

鼓励一下!  
  Top

10 楼snowred_bai(雪血)回复于 2005-09-25 16:57:20 得分 4

不错!Top

11 楼fei8326(天际飞云)回复于 2005-09-25 17:04:52 得分 3

2楼的是c++写的吧。哈哈       很轻松呀  
  Top

12 楼Dan1980()回复于 2005-09-26 20:01:30 得分 0

谢谢大家的鼓励,我会继续努力的!Top

相关问题

  • 初学c++,请高手指点一下!
  • 初学V C 高手指点 急
  • 初学者关于C的几个问题,望高手指点
  • 初学C 一个关于 字符串排序的问题
  • 初学者对选择法和冒泡法排序的浅薄见解,请高手指点!
  • 愿与ASM爱好者为友,请多指点(本人熟悉C,初学ASM)
  • 小弟初学c++现在有一课程设计题,请高人指点
  • 初学C,用什么编辑器和什么编译系统啊,请指点
  • 初学C,有题简单且郁闷的题目不会做,请指点
  • 新手初学C#,请高手指点一本经典书籍,要中文的!!!!!!!!!!!!!!!!!

关键词

  • 函数
  • 排序
  • vector
  • itr
  • 程序
  • istream
  • array
  • ahead
  • ostream
  • sort

得分解答快速导航

  • 帖主:Dan1980
  • llf_hust
  • xiaoyaxin
  • Panther105
  • snowbirdfly
  • jsjjms
  • jixingzhong
  • syril2005
  • syril2005
  • kprzen
  • snowred_bai
  • fei8326

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo