插入排序
来源:互联网 发布:linux串口读取gps数据 编辑:程序博客网 时间:2024/06/05 10:52
对于插入排序,用链表实现是最好的选择,而且复杂度也不高,实现起来也比较简单。性能比冒泡排序要高。
例如 5,4,2,3,1这样的数组进行插入排序。
例如 5,4,2,3,1这样的数组进行插入排序。
int data[] = {5,4,2,3,1};
int length =5;
1.首先建立结点结构体Node.
template <typename T>
struct Node
{
T elem;
Node<T> *next;
};
2.创建一个头结点,创建头结点的目的是方便后续处理。
Node<T> *head = new Node<T>;
Node<T> *pt,*qt;
3.进行插入排序
for( int i=0 ; i<length;++ i)
{
Node<T> *temp = new Node<T>;
temp ->elem =data[i];
temp->elem = NULL;
if( i==0 )//如果是第一个元素,直接插入
head - >next =temp;
else//如果不是首元素则插入比它大的元素前面
{
for( qt =head , pt =head ->next ; pt != NULL ;pt = pt ->next,qt=qt->next)
{if ( pt->elem >= temp->elem){qt ->next = temp;temp ->next =pt;break;}}
if(pt == NULL)// 如果未找到比它大的元素,则插入链表末尾
qt->next = temp;
}
}
4.将排好序的链表写入数组
pt =head->next;
for( int i=0; i<length ; ++i)
{
data[i] = pt->elem;
pt = pt ->next;
}
5.至此已经将数组排好序了。释放链表;
pt = head;
while(pt)
{
head = pt;
pt = pt->next;
delete(head);
}
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- Java NIO类库的各个类关系图
- 【九度】题目1054:字符串内排序
- 红黑树-C语言实现
- 团队从小成长到大过程中应该注意的事
- Linux系统调用--getrlimit()与setrlimit()函数详解
- 插入排序
- 程序员最艰巨的十大任务
- php数组
- uva 1513 - Movie collection
- Windows下正确安装IAR的方法
- io模型学习总结: select, poll, epoll, aio
- acm 常用资源网站
- QDUOJ-67 表达式(贪心)
- 【数字图像处理】Canny图像边缘检测算法VC6.0+OpenCV实现