2.交换法:
交换法的程序最清晰简单,每次用当前的元素一一的同其后的元素比较并交换。
#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 次