算法代码实现之插入排序,C/C++实现
2016-02-28 15:42
681 查看
封装成函数:
测试:
输出:
[9 0 6 5 8 2 1 7 4 3]
[0 1 2 3 4 5 6 7 8 9]
//交换数组元素 void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } //插入排序 void insertion_sort(int *a,int len) { int i,j; if (len < 2) { return; } for (i = 1; i < len; i++) { for (j = i; j > 0 && a[j] < a[j - 1]; j--) { swap(a, j, j - 1); } } }
测试:
//打印输出数组 void print_arr(int *a,int len) { int i; if(len<1) //数组长度必须大于0 { printf("length greater than 0"); return; } //打印整个数组 printf("["); for(i=0; i<len-1; i++) { printf("%d ",a[i]); } printf("%d]\n",a[len-1]); } int main() { int a[] = {9,0,6,5,8,2,1,7,4,3}; int len = sizeof(a)/sizeof(int); print_arr(a,len); insertion_sort(a,len); print_arr(a,len); return 0; }
输出:
[9 0 6 5 8 2 1 7 4 3]
[0 1 2 3 4 5 6 7 8 9]
相关文章推荐
- c++中重载输出操作符
- 1075. PAT Judge (25)
- 【String类】C++:String类的传统写法与现代写法
- 【String类浅拷贝的实现】C++:String类引用计数浅拷贝的两种实现
- 【C++11新特性】 C++11智能指针之unique_ptr
- eclipse开发c++时cout和endl报错
- 【C语言】String类的写时拷贝
- C++学习笔记50——继承中的析构函数
- C++ char*,const char*,string的相互转换
- 【C语言】【面试题】C++中String类引用计数器的浅拷贝写法与深拷贝写法
- UVa 1583 - Digit Generator
- c++ gui qt4 chap02 gotocell
- C++ Primer 学习笔记——关联容器初识
- 【C语言】【面试题】C++中String类浅拷贝,深拷贝的传统写法与现代写法
- C++11 auto_ptr 的问题
- (C++)二叉树中的那些常见的面试题
- C++内存泄漏处理
- C语言 包含结构的结构
- C++产生随机数
- C++面试题