官方首页
 计算机科学与技术
 湖畔文学
 星之传说
 蓝色湖畔桃园
 湖畔艺术
 湖畔科技
 本站留言
热门关键字:    dreamlandcn.com    蓝色湖畔
 >>相关文章
·.NET 4特性聚焦:并行编程
·Java之路(3)--写好你程
·Java之路(2)--写好你程
·什么样的软件公司具有持久生命力
·在SSH架构中出现异常时
·JVM怎么清理栈中的引用
·美国金融风暴席卷全球 又见IT
·Baidu收录是否限制Alim
·“网游大盗”成为2008年十大
·阿里巴巴投3000万美元全球推
 >>点击排行TOP10
·多种排序算法,多种语言讲解(前言)
·多种排序算法,多种语言讲解(简单选
·多种排序算法,多种语言讲解(冒泡排
·多种排序算法,多种语言讲解(堆排序
·多种排序算法,多种语言讲解(快速排
·【其它欣赏】少儿不宜的设计
·多种排序算法,多种语言讲解(树形选
·多种排序算法,多种语言讲解(交换排
·多种排序算法,多种语言讲解(希尔排
·如何使用EasyRecovery找
·多种排序算法,多种语言讲解(总结)
·多种排序算法,多种语言讲解(直接插
·多种排序算法,多种语言讲解(归并排
·c#网络应用编程基础 第5章 Wi
·VC中使用GetModuleFil
 
 当前位置:网站首页 > 计算机科学与技术 > 算法 > 浏览正文
多种排序算法,多种语言讲解(交换排序)
作者:佚名    来源:本站原创    点击数:   更新时间:2008年06月17 【字体:

本文作者:思念天灵,QQ: 47913857,网站:www.dreamlandcn.com

欢迎来访询问与讨论,本文有错的地方,愿能各位谅解并给予批评指出。

如果引用本文内容请注明出处,谢谢。

 

二、交换排序。(Exchange Sort

         交换法的程序最清晰简单,每次用当前的元素一一的同其后的元素比较并交换。

所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。

如图所示:(其中划下划线的是下一次准备交换的两个数)

原始数组:    22    53   72   11   34   44   11   15   28   3    10   65

第一次交换:  11    53   72   22   34   44   11   15   28   3    10   65

第二次交换:   3    53   72   22   34   44   11   15   28   11   10   65

第一趟排序:   3    53   72   22   34   44   11   15   28   11   10   65

第三次交换:   3    22   72   53   34   44   11   15   28   11   10   65

第四次交换:   3    11   72   53   34   44   22   15   28   11   10   65

第五次交换:   3    10   72   53   34   44   22   15   28   11   11   65

第二趟排序:   3    10   72   53   34   44   22   15   28   11   11   65

第六次交换:   3    10   53   72   34   44   22   15   28   11   11   65

第七次交换:   3    10   34   72   53   44   22   15   28   11   11   65

第八次交换:   3    10   22   72   53   44   34   15   28   11   11   65

第九次交换:   3    10   15   72   53   44   34   22   28   11   11   65

第十次交换:   3    10   11   72   53   44   34   22   28   15   11   65

第三趟排序:   3    10   11   72   53   44   34   22   28   15   11   65

第十一次交换: 3    10   11   53   72   44   34   22   28   15   11   65

第十二次交换: 3    10   11   44   72   53   34   22   28   15   11   65

第十三次交换: 3    10   11   34   72   53   44   22   28   15   11   65

第十四次交换: 3    10   11   22   72   53   44   34   28   15   11   65

第十五次交换: 3    10   11   15   72   53   44   34   28   22   11   65

第十六次交换: 3    10   11   11   72   53   44   34   28   22   15   65

第四趟排序:   3    10   11   11   72   53   44   34   28   22   15   65

第十七次交换: 3    10   11   11   53   72   44   34   28   22   15   65

……

最后趟排序:   3    10   11   11   15   22   28   34   44   53   65   72

VB

#Region "交换排序"

    ''' <summary>

    ''' 交换排序VB版,Powered By 思念天灵

    ''' </summary>

    ''' <param name="mData">输入的数组</param>

    ''' <returns>排序好的数组</returns>

    ''' <remarks></remarks>

    Function ExchangeSort(ByVal mData As Integer()) As Integer()

        Dim iTemp, x, y As Integer

        For x = 0 To mData.Length - 2

            For y = x + 1 To mData.Length - 1

                If mData(x) > mData(y) Then

                    iTemp = mData(x)

                    mData(x) = mData(y)

                    mData(y) = iTemp

                End If

            Next

        Next

        Return mData

    End Function

#End Region

C#

        #region "交换排序"

        /// <summary>

        /// 交换排序,Powered By 思念天灵

        /// </summary>

        /// <param name="mData">输入的数组</param>

        /// <returns>排序好的数组</returns>

        public int[] ExchangeSort(int[] mData)

        {

            int iTemp = 0;

            for (int x = 0; x < mData.Length - 1; x++)

            {

                for (int y = x + 1; y < mData.Length; y++)

                {

                    if (mData[x] > mData[y])

                    {

                        iTemp = mData[x];

                        mData[x] = mData[y];

                        mData[y] = iTemp;

                        mydegree++;

                    }

                }

            }

            return mData;

        }

        #endregion

C++

// 交换排序,Powered By 思念天灵

void ExchangeSort(int* mData,int Count)

{

     int iTemp;

     for(int i=0;i<Count-1;i++)

     {

       for(int j=i+1;j<Count;j++)

       {

         if(mData[j]<mData[i])

         {

           iTemp = mData[i];

           mData[i] = mData[j];

           mData[j] = iTemp;

         }

       }

     }

}

JavaScript)(仅限网页)

//交换排序网页JS版,Powered By 思念天灵

function ExchangeSort(mData)

{

         var iTemp;

         for(var i=0;i<mData.length-1;i++)

         {

                   for(var j=i+1;j<mData.length;j++)

                   {

                            if(mData[j]<mData[i])

                            {

                                     iTemp = mData[i];

                                     mData[i] = mData[j];

                                     mData[j] = iTemp;

                            }

                   }

         }

}

从运行的表格来看,交换几乎和冒泡一样糟。事实确实如此。循环次数和冒泡一样也是1/2*(n-1)*n,所以算法的复杂度仍然是O(n2)。由于我们无法给出所有的情况,所以只能直接告诉大家他们在交换上面也是一样的糟糕(在某些情况下稍好,在某些情况下稍差)。

Tags:dreamlandcn.com
Google
关于我们 | 服务指南 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 诚征英才  | 友情链接
Powered by ACTCMS 2.0
Copyrights©2008-2009 蓝色湖畔 www.dreamlandcn.comAll Rights Reserved. 滇ICP备05000680号