简单选择排序

还在看比较简单的排序算法,比如这篇提到的简单选择排序算法。

基本的思想是,在第i次迭代中找到第i个最小的元素,然后把这个元素与原来在第i个乱序的元素交换位置。

形象的说,就是总在观望,很少出手(而冒泡排序是总在出手,从不观望~)

这种算法的比较if()次数是恒定的,但是Swap()的次数只有n-1次。

相比于冒泡排序,规模为10000左右的排序只用200ms左右(冒泡大于700ms),1000规模的排序当然小于1ms。

具体的代码如下:

public static void SimpleSelection(int[] temp)
        {
            int i, j, min;
            for (i = 0; i < temp.Length; i++)
            {
                min = i;
                for (j = i + 1; j < temp.Length; j++)
                {
                    if (temp[min] > temp[j])
                        min = j;
                }
                if (i != min)
                {
                    Swap(ref temp[i], ref temp[min]);           
                }
            }
        }

        private static void Swap(ref int a, ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值