排序系列(二)
来源:互联网 发布:还珠之我是知画txt下载 编辑:程序博客网 时间:2024/05/01 15:07
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次
从运行的表格来看,交换几乎和冒泡一样糟。事实确实如此。循环次数和冒泡一样也是1/2*(n-1)*n,所以算法的复杂度仍然是O(n*n)。由于我们无法给出所有的情况,所以只能直接告诉大家他们在交换上面也是一样的糟糕(在某些情况下稍好,在某些情况下稍差)。
来自:http://topic.csdn.net/u/20080928/14/4e7a079c-21c4-484b-ab80-3785beccd489.html
- 排序系列(二)
- 算法系列(二) 归并排序
- 牛客网算法课系列(二):排序
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 排序算法系列二(选择排序)
- 排序总结系列二:直接插入排序
- 排序算法系列二之快速排序
- 基础算法系列(二)——冒泡排序
- 基础算法系列(二十)排序算法之耐心排序
- 排序算法系列之(二)——冒泡排序名字最为形象的一个
- sql 教程系列 二、检索结果排序
- 精通八大排序算法系列:二、堆排序算法
- 经典排序算法系列之二:选择排序
- 精通八大排序算法系列:二、堆排序算法
- 数据结构排序系列详解之二 希尔排序
- 排序系列之二堆排序的非递归算法
- 精通八大排序算法系列:二、堆排序算法
- 排序系列(一)
- 排序系列(一)
- 如何检查你的友情链接是否还在?
- 利用反射机制,遍历POJO对象的各个字段名及属性
- 在MFC中使用WPF技术
- Apache 多站点配置
- 排序系列(二)
- Android游戏开发之旅(五)Path和Typeface
- 排序系列(三)
- 需求 和 易维护
- Android游戏开发之旅(六)自定义View
- Android游戏开发之旅(七)自定义SurfaceView
- MySQL密码丢失的找回方法(win/*inx)
- Android游戏开发之旅(八)SurfaceView类实例
- 排序系列(四)