| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1245 人关注过本帖
标题:初学C#写了一段排序代码 各位看看到底算是冒泡还是选择
只看楼主 加入收藏
xboxeer
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-7-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
初学C#写了一段排序代码 各位看看到底算是冒泡还是选择
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            int inumber;
            string strchoice;
            Console.WriteLine("type in the number of the numbers you want");
            inumber = Int32.Parse(Console.ReadLine());
            fh();
            px(inumber);
            fh();
            
            do
            {
                Console.WriteLine("again");
                Console.WriteLine("press y to continue");
                strchoice = Console.ReadLine();
                if (strchoice == "y" || strchoice == "Y")
                {
                    Console.WriteLine("type in the number of the numbers you want");
                    inumber = Int32.Parse(Console.ReadLine());
                    fh();
                    px(inumber);
                    fh();
                }
                else
                    break;
            }
            while (strchoice != "y" || strchoice!="Y");
            Console.WriteLine("press any key to exit");
        }
        static void px(int j)
        {//赋值
            int imin;
            int itemp;
            int[] ainumber = new int[j];
            for (int i = 0; i < ainumber.Length; i++)
            {
                Console.WriteLine("type in the number you want");
                ainumber[i] = Int32.Parse(Console.ReadLine());
            }
            //排序
            for (int i = 0; i < j; i++)
            {
               
                imin = i;
                itemp = ainumber[i];
                for (int k = i+1; k < j; k++)
                {
                    if (ainumber[imin] > ainumber[k])
                    {
                        itemp = ainumber[imin];
                        ainumber[imin] = ainumber[k];
                        ainumber[k] = itemp;
                    }
                }
               
               
            }
            fh();
            for (int i = 0; i < ainumber.Length; i++)
            {
                Console.WriteLine(ainumber[i]);
            }
            fh();
        }
        static void fh()
        {
            Console.WriteLine("*******************************************************");
           
        }
   
    }
}

写实照着选择排序的算法来的 后来看看觉得好像是冒泡了~

PS,写完这段正在写插入排序了 没有头绪 有没有哪位高手给点指导啊
搜索更多相关主题的帖子: 冒泡 代码 初学 选择 
2009-07-22 16:05
NTYLWJ
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:191
专家分:698
注 册:2008-12-2
收藏
得分:1 
没看懂的路过一下。新手。比你还新的手
2009-07-22 19:00
jimmy1866
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2009-7-23
收藏
得分:1 
冒泡
2009-07-23 14:59
longXYZ
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2009-7-23
收藏
得分:1 
冒泡,只不过感觉你的程序有点复杂啊..hehe
2009-07-23 16:23
ceco3000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:147
注 册:2009-7-14
收藏
得分:1 
没有去看你全部的代码只是看了 排序的核心部分.
if (ainumber[imin] > ainumber[k])
                    {
                        itemp = ainumber[imin];
                        ainumber[imin] = ainumber[k];
                        ainumber[k] = itemp;
                    }
交换部分是每一次比较的判断是否交换. 这个是冒泡
选择是比较完一次后进行一次交换.
2009-07-23 17:40
乖老鼠
Rank: 5Rank: 5
来 自:四川省
等 级:职业侠客
威 望:2
帖 子:434
专家分:394
注 册:2008-9-8
收藏
得分:1 
你写的这个算法不是冒泡。
冒泡是在内层循环内两两比较,而你的是拿外层和内层循环的两两比较,所以不是冒泡。
冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。


如果拿你的程序改成冒泡,是下面的效果
            for (int i = 0; i < j; i++)
            {
                for (int k = i+1; k < j; k++)
                {
                    if (ainumber[k-1] > ainumber[k])
                    {
                        itemp = ainumber[k-1];
                        ainumber[k-1] = ainumber[k];
                        ainumber[k] = itemp;
                    }
                }
            }

你可以参考下面的定义:
选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面。

所以你的是选择,而不是冒泡

另外,你定义的变量imin是多余的,在执行排序算法时时可以用外层循环的i代替的
itemp = ainumber[i];这句变量初始化也是可以不要的。

[[it] 本帖最后由 乖老鼠 于 2009-7-24 09:01 编辑 [/it]]

转眼就从编程菜鸟混成了半灌水
2009-07-24 08:51
ljc_zy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:56
专家分:131
注 册:2009-7-14
收藏
得分:1 
选择排序!

恋恋花事 www.
2009-07-25 14:14
名沁
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:173
注 册:2009-4-5
收藏
得分:1 
学习
新手
时间有点长,快忘了算法长什么样了
2009-07-25 15:53
logan2009
Rank: 2
等 级:论坛游民
帖 子:46
专家分:62
注 册:2009-4-15
收藏
得分:1 
用的冒泡  ,但是太复杂了。不经典
2009-07-29 16:37
jinwushe
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2009-5-6
收藏
得分:1 
感觉冒泡好难哦
2009-07-30 14:13
快速回复:初学C#写了一段排序代码 各位看看到底算是冒泡还是选择
数据加载中...
 
   



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

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