博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的排序算法:插入排序法
阅读量:4697 次
发布时间:2019-06-09

本文共 1009 字,大约阅读时间需要 3 分钟。

算法原理:依次对比每个位置上的元素与之前元素的大小,并进行交换,直道之前元素不大于目标元素

算法复杂度:O(n^2)

c++实现整形数组排序

1 void insertionSort(int arr[],int n) 2 { 3     for(int i=1;i
0;j--) 5 { 6 if(arr[j-1]>arr[j]) 7 swap(arr[j],arr[j-1]); 8 else 9 break;10 }11 return;12 }

每次swap经过了三次赋值运算,可通过改写语句优化算法,建立一个临时变量存储当前元素数据,用一次赋值运算代替swap函数。

1 void insertionSort(int arr[],int n) 2 { 3     for(int i=1;i
0&&arr[j-1]>e;j--) 8 arr[j]=arr[j-1]; 9 arr[j]=e;10 }11 return;12 }

将第二层循环内的判断语句加入到了for循环判断中,省去了break,需注意的是,与j-1元素对比的是存储当前元素的临时变量e。

转化为范型

1 template 
2 void insertionSort(T arr[],int n) 3 { 4 for(int i=1;i
0&&arr[j-1]>e;j--) 9 arr[j]=arr[j-1];10 arr[j]=e;11 }12 return;13 }

算法特点是经过排序的部分顺序确定,而第一个元素自然有序,所以第一层循环从i=1开始,第二层循环内,判断之前元素不大于当前元素时,说明已经找到当前元素位置,可用break跳出本次循环。

因为存在跳出循环的情况,所以插入排序更适合基本有序的数组排序。

转载于:https://www.cnblogs.com/Bird-of-Paradise/p/6384938.html

你可能感兴趣的文章
数据访问 投票习题
查看>>
CIO知识储备
查看>>
cnblog!i'm coming!
查看>>
使用点符号代替溢出的文本
查看>>
Axios 中文说明
查看>>
fatal: remote origin already exists.
查看>>
gridview 自定义value值
查看>>
2018二月实现计划成果及其三月规划
查看>>
类名.class和getClass()区别
查看>>
12/17面试题
查看>>
LeetCode 242. Valid Anagram
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
团队项目(第五周)
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>