| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 608 人关注过本帖
标题:求助,选择法的主导思想是什么啊?怎么用它来排序
只看楼主 加入收藏
xtx37
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2010-11-10
结帖率:85.71%
收藏
已结贴  问题点数:19 回复次数:5 
求助,选择法的主导思想是什么啊?怎么用它来排序
如题
搜索更多相关主题的帖子: 主导 选择 思想 
2010-11-24 14:43
qqlinlin
Rank: 2
等 级:论坛游民
帖 子:13
专家分:58
注 册:2010-11-23
收藏
得分:3 
思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
初始关键字 [49 38 65 97 76 13 27 49]  
 第一趟排序后 13 [38 65 97 76 49 27 49]  
 第二趟排序后 13 27 [65 97 76 49 38 49]  
 第三趟排序后 13 27 38 [97 76 49 65 49]   
 第四趟排序后 13 27 38 49 [76 97 65 49 ]  
 第五趟排序后 13 27 38 49 49 [97 65 76]  
 第六趟排序后 13 27 38 49 49 65 [97 76]  
 第七趟排序后 13 27 38 49 49 65 76 [97]   
  最后排序结果 13 27 38 49 49 65 76 97
有什么疑问的QQ交流:1530591908
2010-11-24 14:55
哭死我了
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2010-9-23
收藏
得分:3 
那个是冒泡法吧?
2010-11-24 16:05
xtx37
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2010-11-10
收藏
得分:0 
回复 3楼 哭死我了
老大,是选择法啊,请看清题目,谢谢
2010-11-24 17:43
a343637412
Rank: 7Rank: 7Rank: 7
来 自:そ ら
等 级:黑侠
帖 子:357
专家分:620
注 册:2010-9-26
收藏
得分:3 
我这里有个选择的程序
看看就理解了
#include<stdio.h>

void main()
{
    void sort(int array[],int n);
    int a[100],i,n;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);        //这里将输入的N个数放进数组;
        }
        sort (a,n);
        for(i=0;i<n;i++)
        {
            printf("%d ",a[i]);
        }
    }
}
void sort(int array[],int n)
{
    int i,j,k,t;
    for(i=0;i<n-1;i++)            //注意这里的n-1,
    {
        k=i;                //将数组里的第一个元素下标取出来;(以后逐渐去后面的数直到n-1个)
        for(j=i+1;j<n;j++)
        {
            if(array[j]<array[k])        //这里与取出的那个数进行比较(取出数后面的数字)
            {
                t=array[k];
                array[k]=array[i];        //换位置
                array[i]=t;
            }
        }
    }
   
}

//   选择比冒泡运算步骤少些...
2010-11-24 21:04
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
收藏
得分:3 
每次排查时都记录最小的数据的位置,最后的时候让第一个数与记录的最小的数进行互换,在选择法中,每次排查时,数据是不变的,变得只是最小数的位置,直到每次排查完后,才将最小数进行交换 给你个程序
程序代码:
#include"stdio.h"
void main()
{
    int a[10],i,j,t,k;
        printf("input the number:\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<10;i++)
    {
        k=i;
        for(j=9;j>i;j--)
            if(a[j]<a[k])
                k=j;   
            {
                t=a[j];
                a[j]=a[k];
                a[k]=t;
            }
    }
    printf("the number are:\n");
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
}

2010-11-24 21:48
快速回复:求助,选择法的主导思想是什么啊?怎么用它来排序
数据加载中...
 
   



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

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