话不多说上代码
using namespace std;
//插入排序
void crpx(int a[],int n){
for(int i=1;i<n;i++){
int temp=a[i];
int j=i;
while(j>0&&temp<a[j-1]){
a[j]=a[j-1];
j--;
}
a[j]=temp;
for(int k=0;k<n;k++){
cout<<a[k]<<" ";
}
cout<<endl;
}
}
//交换
void swap(int &a,int &b){
int c;
c=a;
a=b;
b=c;
}
//选择排序
void xzpx(int a[],int n){
int min;
for(int i=0;i<n;i++){
min=i;
for(int j=i;j<n;j++){
if(a[j]<a[min]){
min=j;
}
swap(a[i],a[min]);
}
for(int k=0;k<n;k++){
cout<<a[k]<<" ";
}
cout<<endl;
}
}
//冒泡排序
void mppx(int a[],int n){
int lastexchange;
int i=n;
while(i>0){
for(int j=0;j<i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
lastexchange=j;
}
}
i=lastexchange;
for(int k=0;k<n;k++){
cout<<a[k]<<" ";
}
cout<<endl;
}
}
int main(){
int a[]={4,3,2,1};
crpx(a,4);
//xzpx(a,4);
//mppx(a,4);
return 0;
}
//更新一下,完善一下代码
#include <string.h>
#include <iostream>
using namespace std;
int n;//定义全局变量n,取数组长度
void swap(int &a,int &b){
int c=a;
a=b;
b=c;
}
void print(int *a){
for(int i=0;i<n;i++){
cout<<a[i]<<'\t';
}
cout<<endl;
}
int *mppx(int *a){
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
if(a[j]<a[j+1]){
swap(a[j],a[j+1]);
}
}
}
return a;
}
int *crpx(int *a){
for(int i=1;i<n;i++){
int temp=a[i];
int j=i;
while(j>0&&temp<a[j-1]){
a[j]=a[j-1];
j--;
}
a[j]=temp;
}
return a;
}
int *xzpx(int *a){
for(int i=0;i<n;i++){
int temp=a[i];
for(int j=i+1;j<n;j++){
if(a[j]>temp){
swap(a[j],temp);
}
}
a[i]=temp;
}
}
int main(){
int a[]={1,2,3,4,5};
n=sizeof(a)/sizeof(int);
cout<<"排序前:";
print(a);
cout<<"排序后:";
mppx(a);
print(a);
cout<<"排序后:";
crpx(a);
print(a);
cout<<"排序后:";
xzpx(a);
print(a);
return 0;
}