代码改变世界

排序算法

2011-08-27 09:46  DylanChan  阅读(226)  评论(0编辑  收藏  举报
    /// 
    /// 冒泡排序
    /// 
    public void BubbleSort(int[] sortItems)
    {
        for (int i = 0; i < sortItems.Length; i++)
        {
            for (int j = sortItems.Length - 2; j >= i; j--)
            {
                if (sortItems[j + 1] < sortItems[j])
                {
                    //---------  实现交换  ---------
                    int temp = sortItems[j];
                    sortItems[j] = sortItems[j + 1];
                    sortItems[j + 1] = temp;
                    //---------  实现交换  ---------
                }
            }
        }
    }
    /// 
    /// 冒泡排序(优化版)
    /// 
    public void BubbleSortImproved(int[] sortItems)
    {
        int i, j, temp;
        bool flag = true;
        i = 0;
        while (i < sortItems.Length && flag)
        {
            flag = false;
            for (j = sortItems.Length - 2; j >= i; j--)
            {
                if (sortItems[j + 1] < sortItems[j])
                {
                    //---------  实现交换  ---------
                    temp = sortItems[j];
                    sortItems[j] = sortItems[j + 1];
                    sortItems[j + 1] = temp;
                    //---------  实现交换  ---------
                    flag = true;    //有数据交换,flag设为true;
                }
            }
            i++;
        }
    }
    /// 
    /// 简单选择排序
    /// 
    public void SimpleSelectionSort(int[] sortItems)
    {
        int i, j, min, temp;
        for (i = 0; i < sortItems.Length; i++)
        {
            min = i;
            for (j = i + 1; j < sortItems.Length; j++)
            {
                if (sortItems[min] > sortItems[j])
                {
                    min = j;
                }
            }
            temp = sortItems[min];
            sortItems[min] = sortItems[i];
            sortItems[i] = temp;
        }
    }
    /// 
    /// 直接插入排序
    /// 
    public void StraightInsertionSort(int[] sortItems)
    {
        int i, j, temp;
        for (i = 1; i < sortItems.Length; i++)
        {
            temp = sortItems[i];
            j = i;
            while (j > 0 && sortItems[j - 1] > temp)
            {
                sortItems[j] = sortItems[j - 1];
                j--;
            }
            sortItems[j] = temp;
        }
    }