C#冒泡排序、选择排序、插入排序、希尔排序

 冒泡排序:

public void Sort(int[] list)
        {
            int i, j, temp;

            bool done = false;

            j = 1;

            while ((j < list.Length) && (!done))
            {
                done = true;

                for (i = 0; i < list.Length - j; i++)
                {

                    if (list[i] > list[i + 1])
                    {

                        done = false;

                        temp = list[i];

                        list[i] = list[i + 1];

                        list[i + 1] = temp;

                    }
                }

                j++;
            }

        }

 

选择排序:

public void Sort(int[] list)
        {
            int min;
            for (int i = 0; i < list.Length - 1; ++i)
            {
                min = i;
                for (int j = i + 1; j < list.Length; ++j)
                {
                    if (list[j] < list[min])
                        min = j;// min就是剩下元素中最小的那个的索引值
                }
                // 交换最小值和当前值,达到从小到大的要求
                int t = list[min];
                list[min] = list[i];
                list[i] = t;
            }
        }

插入排序:


 public void Sort(int[] list)
        {
            for (int i = 1; i < list.Length; ++i)
            {
                int t = list[i];
                int j = i;
                // 寻找插入点,从后往前把插入点后的元素后移
                while ((j > 0) && (list[j - 1] > t))
                {
                    list[j] = list[j - 1];
                    --j;
                }
                list[j] = t;
            } 
        }

 

希尔排序:

public void Sort(int[] list) 
        { 
            int inc; 
            // 确定合适的间隔
            for(inc = 1; inc <= list.Length/9; inc = 3*inc+1); 

            for( ; inc > 0; inc /= 3) // 每次间隔缩短2/3
            { 
                for( int i = inc + 1; i <= list.Length; i += inc ) 
                { 
                    int t = list[i-1]; 
                    int j = i; 
                    // 插入排序
                    while( ( j > inc ) && ( list[j - inc - 1] > t ) ) 
                    { 
                        list[j-1] = list[j - inc - 1]; 
                        j -= inc; 
                    }
                    list[j-1] = t; 
                } 
            } 
        } 


 

 主函数:

 

static void Main(string[] args)
        {
            int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };

            Sort(iArrary);

            for (int m = 0; m < iArrary.Length; m++)

                Console.Write("{0} ", iArrary[m]);

            Console.WriteLine();
        }



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值