| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1408 人关注过本帖
标题:又是排序问题..........
只看楼主 加入收藏
wufei1989121
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:113
注 册:2009-11-13
收藏
得分:0 

 

#include <stdio.h>
#define N 10
void main()
{
    int num[N];
    int i;
    int j,k=0;
    int temp;
    printf("input %d numbers:\n",N);
    for (i=0; i<N; i++)//// for (i=0; i<N-1; i++)i<n  不然只能输入n-1个数
    {
        scanf("%d",&num[i]);
    }

    for (i=0; i<N-1; i++)                          
    {
        k=i;

        for (j=i+1; j<N; j++)
        {
            if (num[k]>num[j])
                k=j;
            if(k!=i)
            {
                temp = num[i];            
                num[i] = num[k];
                num[k] = temp;
            }
        }
        
    }

    for (i=0; i<N; i++)
    {
        printf("%4d",num[i]);
    }
    printf("\n");
}

2009-12-29 22:54
l3315534
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-12-28
收藏
得分:0 
高手云集!!
2009-12-30 08:57
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:0 
    这个可以运行
for (i=0; i<N-1; i++)
    {
        max = i;

        for (j=i+1; j<N; j++)
        {
            if (max<num[j])
            {
                max = num[j];
            }
        }

        temp = num[i];
        num[i] = max;
        max = temp;
    }

改成下标交换能行,但为什么不用下标表示,直接用数组值交换  就不行那?

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2009-12-30 12:52
xiaowenhuman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:101
专家分:104
注 册:2009-5-10
收藏
得分:0 
用数组交换耗时,大致看了下,11楼写的就比较好,一个比较精典的算法。
2009-12-30 19:33
xiefeng122
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:126
专家分:139
注 册:2009-4-1
收藏
得分:0 
回复 13楼 Alen0128
这个可以排出来?参考11楼的吧
快排的中心思想是分割成独立两部分,然后用递归实现排序
程序代码:
//快速排序
int partition(int *a,int low,int high)
{
    int key=*(a+low);
    while(low<high)
    {
        while(low<high && *(a+high)>=key)
            high--;
        *(a+low)=*(a+high);
        while(low<high && *(a+low)<=key)
            low++;
        *(a+high)=*(a+low);
    }
    *(a+low)=key;
    return low;
}

void QuickSort(int *a,int low,int high)
{
    if(low<high)
    {
        int key=partition(a,low,high);
        QuickSort(a,low,key-1);
        QuickSort(a,key+1,high);
    }
}
还有下次贴代码能不能都用这个···
2009-12-30 22:30
快速回复:又是排序问题..........
数据加载中...
 
   



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

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