三种简单排序C++实现
1 插入排序
#include<iostream>
using namespace std;
void insert(int a[] ,int len){
// 依次插入每一个元素
for(int i = 1; i < len ;i++){
// cout<<"size is"<<sizeof(a)/sizeof(int)<<endl;
int k = a[i];
int j = i-1;
for(;a[j]>k && j>=0;j--) a[j+1] = a[j];
a[j+1] = k;
for(int z = 0; z <= i;z++ ) cout<<a[z]<<" ";
puts("");
// for(int z = 0; z<=i;z++ ) cout<<a[z]<<endl<<endl;
//从已排序数组中寻找该插入的位置
}
}
int main(){
int r[]= {3,1,2,45,6};
// cout<<len(r)<<endl;
int len = sizeof(r)/sizeof(int);
insert(r,len);
for(int i = 0; i < sizeof(r)/sizeof(int);i++ ) cout<<r[i]<<endl;
}
已经内存优化
- 代码接口问题
- 让可复用性更高
- 单一责任原则
- 参数逻辑分离
- 封装
良好的代码风格会使你付出1.2倍的编码时间,减少一半的调试时间
2 冒泡排序
#include<iostream>
using namespace std;
void bub(int a[],int len){
//冒n-1次泡
for(int i = 0;i<len-1;i++){
for(int j = 0;j<len-i-1;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]);
//从0开始左右交换
for(int z = 0; z < len;z++ ) cout<<a[z]<<" ";
puts("");
}
}
int main(){
int r[]= {5,4,3,2,1};
// cout<<len(r)<<endl;
int len = sizeof(r)/sizeof(int);
bub(r,len);
for(int i = 0; i < sizeof(r)/sizeof(int);i++ ) cout<<r[i]<<endl;
}
3 选择排序
#include<iostream>
using namespace std;;
void select(int a[] ,int len){
int index=0;
//遍历n次 存储最小值下标
for(int j = 0;j<len ;j++){
index = j;
for(int i=j+1 ;i<len;i++){
if(a[i]<a[index]) index = i;
}
swap(a[index],a[j]);
for(int z = 0; z < len;z++ ) cout<<a[z]<<" ";
puts("");
//交换前面元素与最小元素下标
}
}
int main(){
int r[]= {5,4,3,2,1,123,-2,0};
// cout<<len(r)<<endl;
int len = sizeof(r)/sizeof(int);
select(r,len);
for(int i = 0; i < sizeof(r)/sizeof(int);i++ ) cout<<r[i]<<endl;
}
其实这些算法在实际使用上并不多,建议直接使用c++sort函数
可以参考我的博文https://www.cnblogs.com/addzero/articles/16574950.html