现在的位置: 首页 > 综合 > 正文

交换法 C

2013年07月01日 ⁄ 综合 ⁄ 共 883字 ⁄ 字号 评论关闭

交换法

交换法:
交换法的程序最清晰简单,每次用当前的元素一一的同其后的元素比较并交换。
#include <iostream.h>
void ExchangeSort(int* pData,int Count)
{
    int iTemp;
    for(int i=0;i<Count-1;i++)
    {
        for(int j=i+1;j<Count;j++)
        {
            if(pData[j]<pData[i])
            {
                iTemp = pData[i];
                pData[i] = pData[j];
                pData[j] = iTemp;
            }
        }
    }
}

void main()
{
    int data[] = {10,9,8,7,6,5,4};
    ExchangeSort(data,7);
    for (int i=0;i<7;i++)
        cout<<data[i]<<" ";
    cout<<"/n";
}
倒序(最糟情况)
第一轮:10,9,8,7->9,10,8,7->8,10,9,7->7,10,9,8(交换3)
第二轮:7,10,9,8->7,9,10,8->7,8,10,9(交换2)
第一轮:7,8,10,9->7,8,9,10(交换1)
循环次数:6
交换次数:6

其他:
第一轮:8,10,7,9->8,10,7,9->7,10,8,9->7,10,8,9(交换1)
第二轮:7,10,8,9->7,8,10,9->7,8,10,9(交换1)
第一轮:7,8,10,9->7,8,9,10(交换1)
循环次数:6
交换次数:3

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

抱歉!评论已关闭.