马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

冒泡排序插入排序Shell排序

[复制链接]
查看4569 | 回复0 | 2014-7-21 09:40:09 | 显示全部楼层 |阅读模式
今天分享这个三个排序的DEMO:冒泡排序、插入排序、Shell排序1.Shell排序
      Shell排序通过将数据分成不同的组,先对每一组进行排序,然后再对所有的元素进行一次插入排序,以减少数据交换和移动的次数。平均效率是O(nlogn)。

代码:

[C#] 纯文本查看 复制代码
    /// <summary>
    /// shell排序
    /// </summary>
    public class ShellSort : ISort
    {
        public int[] Sort(int[] array)
        {
            if (array != null)
            {
                int[] list = { 9, 5, 3, 2, 1 };
                foreach (int k in list)
                {
                    for (int i = k; i < array.Length; i++)
                    {
                        int current = array;
                        int preIndex = i - k;
                        while (preIndex >= 0 && preIndex < array.Length && current < array[preIndex])
                        {
                            array[preIndex + k] = array[preIndex];

                            preIndex = preIndex - k;
                        }
                        array[preIndex + k] = current;
                    }
                }
            }
            return array;
        }
    }




2.插入排序
     插入排序通过把序列中的值插入一个已经排序好的序列中,直到该序列的结束。


代码:


[C#] 纯文本查看 复制代码
/// <summary>
    /// 插入排序
    /// </summary>
    public class InsertSort : ISort
    {
        public int[] Sort(int[] array)
        {
            if (array != null)
            {
                int k = 1;//使用k变量,后面更好的扩展到Shell排序
                for (int i = k; i < array.Length; i++)
                {
                    int current = array;
                    int preIndex = i - k;
                    while (preIndex >= 0 && preIndex < array.Length && current < array[preIndex])
                    {
                        array[preIndex + k] = array[preIndex];

                        preIndex = preIndex - k;
                    }
                    array[preIndex + k] = current;
                }
            }
            return array;
        }
    }





3.冒泡排序
      冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。


代码:


[C#] 纯文本查看 复制代码
/// <summary>
    /// 冒泡排序
    /// </summary>
    public class BubbleSort : ISort
    {
        public int[] Sort(int[] array)
        {
            if (array != null)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    for (int j = 1; j < array.Length - i; j++)
                    {
                        Swap(ref array[j - 1], ref array[j]);
                    }
                }
            }
            return array;
        }

        public static void Swap(ref int int1, ref int int2)
        {
            if (int1 > int2)
            {
                int temp = int1;
                int1 = int2;
                int2 = temp;
            }
        }
    }







相关帖子

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则