C/C++ -- 插入排序算法
2018-06-17 20:28:23来源:未知 阅读 ()
索引:
开源Spring解决方案--lm.solution
参看代码 GitHub:
Sort.cpp
代码简要分析说明:
1.for(int i=1;i<nSize;i++)
这个外层的for循环, [0][1],[1][2],[2][3]... 这样的顺序让内层循坏开始索引递减比较,保证每对开头
的内层循坏排序前,前面的都是排序好的
2.while (tmp<ary[n]) ... n-- ...
这个内层的while循环,使外层的每对开头的循环开始,若比较后大小为真,则换位, n-- 保证了 第 n+1 位也就是 i 索引对应
的值始终可以排到正确的位置
3.运行环境
Visual C++ 2008 IDE 环境, 建议实际跑一下并调试一下,结果如下:
4.代码:
1 #include <iostream> 2 3 using namespace std; 4 5 // 定义函数 -- 插入排序算法 6 void Sort(int* ary,int nSize) 7 { 8 /* 9 * 循环元素,动态理解: 10 * arr[1] 与 arr[0] 比较 11 * arr[2] 与 arr[1],arr[0] 比较 12 * arr[3] 与 arr[2],arr[1],arr[0] 比较 13 * 等等 依次类推 14 */ 15 for(int i=1;i<nSize;i++) 16 { 17 int tmp=ary[i]; 18 int n=i-1; 19 20 // 若后位元素小于前位元素则交换位置 21 while (tmp<ary[n]) 22 { 23 ary[n+1]=ary[n]; 24 25 // 元素为动态递减 26 n--; 27 28 // 到第一位元素后,无前位元素,跳出 29 if(n==-1) 30 { 31 break; 32 } 33 } 34 35 ary[n+1]=tmp; 36 } 37 } 38 39 int main(int argc, char* argv[]) 40 { 41 // 需要排序的数组 42 int numArray[]={12,31,5,87,1,56}; 43 int nLength=sizeof(numArray)/sizeof(int); 44 45 // 排序 46 Sort(numArray,nLength); 47 48 // 显示排序后的结果 49 for(int k=0;k<nLength;k++) 50 { 51 cout<<numArray[k]<<","; 52 } 53 cout<<endl; 54 55 // 退出 56 return 0; 57 }
蒙
2018-06-12 21:50 周二
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash