| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1434 人关注过本帖
标题:杨兄弟以及诸位大牛还在吧,我用自己的思维写了2个数组排序的程序[24楼],各 ...
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用wp231957在2012-11-16 19:17:33的发言:

我可不想做搬砖人呢
搬砖的默默流下了伤心的泪水
2012-11-16 19:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我感觉职业搬砖人 很累滴
自由人,想考虑一会代码  就考虑一会  不想考虑  我就呼呼去

比如  二叉树  咋看也看不懂,索性就不看了 连带其他算法一并都不看

DO IT YOURSELF !
2012-11-16 19:34
wengege
Rank: 2
等 级:论坛游民
帖 子:148
专家分:93
注 册:2012-7-23
收藏
得分:0 
嵌入式行业的冒泡! 毕业半年也是摸爬滚打的,在学校没学什么东西。也不是没学只是学的时候都是闭门造车大多时间是抱着浮躁的心态,出来工作后一直问自己 自己到底会什么。。什么都会可是什么都不会!什么都是个半桶水!看着别的人做什么什么高级项目、写什么时髦的驱动,自己也盲目的瞎搬感觉自己好像也成了那一档次的人一样! 真正动起手来 还时常被一些很基础的问题给绊住。所以结果导致时间和精力都浪费却一事无成!生活压力的逼迫使我不得不静下心来思考:现在能做什么? 适合做什么?怎样才能做好, 对于自己从事的岗位职业,要想取得成功, 我想唯有先祛除浮躁心态! 静下来,只有专注才能体会其中的乐趣。向我类似的人先把基础知识打牢,不要做一个老想偷懒的人! 踏踏实实的做事,我相信成功会伴随你!
收到的鲜花
  • 寒风中的细雨2012-11-16 20:51 送鲜花  50朵   附言:讲的是这样!!!

打好基础,学会站在巨人的肩膀上!
2012-11-16 20:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>

int maxa(int s[],int n)
{
    if(n==0) return s[n];
    int a=s[0];
    int b=maxa(s+1,n-1);
    return a>b?a:b;
}
//数组按大到小排序
//bug:源数组中不能有相同数据
int main ()
{
    int source[10]={1,3,5,7,9,8,6,4,11,10};
    int dest[10];
    int i,j;
    for(i=0;i<10;i++)
    {
        dest[i]=maxa(source,9);
        for(j=0;j<10;j++) if(source[j]==dest[i]) source[j]=-1;
    }
    for(i=0;i<10;i++) printf("%3d",dest[i]);
    printf("\n");
    return 0;
}
/////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>

//数组按大到小排序
//bug:源数组中不能有相同数据
struct Count
{
    int c;
    int count;
};

int main ()
{
    int source[10]={1,3,5,7,9,8,6,4,11,10};
    struct Count conter[100];
    int i;
    for(i=0;i<100;i++)
    {
        conter[i].c=i;
        conter[i].count =0;
    }
    for(i=0;i<10;i++) conter[source[i]].count ++;
    for(i=99;i>=0;i--) if(conter[i].count) printf("%3d",conter[i].c);
    printf("\n");
    return 0;
}
/////////////////////////////////////////////////////////////////////////////////

DO IT YOURSELF !
2012-11-16 21:34
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
第一个可以说是选择排序的另类写法吧。第二个可以叫统计法或标记法(瞎编的名称),优点时间复杂度低O(n),缺点适用范围很小。
给你改了一下以消除不能有相同数据的bug。
程序代码:
////////////////////////////////////////////////////////////////////////////////////
 #include <stdio.h>

int maxa(int s[],int n)

 {
     if(n==0) return s[n];
     int a=s[0];
     int b=maxa(s+1,n-1);
     return a>b?a:b;

 }

 //数组按大到小排序

 //
 int main ()

 {
     int source[10]={1,3,5,7,9,8,6,4,11,10};
     int dest[10];
     int i,j;
     for(i=0;i<10;i++)
     {
         dest[i]=maxa(source,9);
         for(j=0;j<10;j++) if(source[j]==dest[i]){ source[j]=-1;
break;}
     }
     for(i=0;i<10;i++) printf("%3d",dest[i]);
     printf("\n");
     return 0;

 }

 /////////////////////////////////////////////////////////////////////////////////
 #include <stdio.h>

//数组按大到小排序

 //
 struct Count

 {
     int c;
     int count;

 };

int main ()

 {
     int source[10]={1,3,5,7,9,8,6,4,11,10};
     struct Count conter[100];
     int i;
     for(i=0;i<100;i++)
     {
         conter[i].c=i;
         conter[i].count =0;
     }
     for(i=0;i<10;i++) conter[source[i]].count ++;
     for(i=99;i>=0;i--) while(conter[i].count--) printf("%3d",conter[i].c);
     printf("\n");
     return 0;

 }

 /////////////////////////////////////////////////////////////////////////////////



重剑无锋,大巧不工
2012-11-16 22:16
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
路过学习,顺便贴出自己的代码
程序代码:
#include<stdio.h>
int main(){
    int source[]={1,3,5,7,9,8,6,4,11,10,12,12,45,68,45};
    int length=sizeof source/sizeof source[0];
    for(int i=0;i<length;++i){
        for(int j=i+1;j<length;++j){
            int tem;
            if(source[i]<source[j]){
                tem=source[i];
                source[i]=source[j];
                source[j]=tem;
            }
        }
        printf("%d ",source[i]);
    }
    return 0;
}
排序了?没排?

WE GO
2012-11-16 22:58
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
不好意思,更正,是选择排序。

[ 本帖最后由 beyondyf 于 2012-11-16 23:13 编辑 ]

重剑无锋,大巧不工
2012-11-16 23:02
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
略一看是排序,其实我什么都没干,只是把数组中的数从大到小打印了一遍

WE GO
2012-11-16 23:07
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
其实也排序了

WE GO
2012-11-16 23:08
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
程序代码:
#include<stdio.h>
int main(){
    int source[]={1,3,5,7,9,8,6,4,11,10,12,12,45,68,45};
    int length=sizeof source/sizeof source[0];
    for(int i=0;i<length;++i){
        int tem1=source[i];
        for(int j=i+1;j<length;++j){
            int tem2;
            if(tem1<source[j]){
                tem2=tem1;
                tem1=source[j];
                source[j]=tem2;
            }
        }
        printf("%d ",tem1);
    }
    return 0;
}
贴错代码了,本来要贴的是这个

WE GO
2012-11-16 23:11
快速回复:杨兄弟以及诸位大牛还在吧,我用自己的思维写了2个数组排序的程序[24楼 ...
数据加载中...
 
   



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

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