一、功能需求
对数据进行排序是程序员经常遇到的问题,因此,为方便日后需要,记录如下.
二、功能代码
#include<iostream>
#include<stdlib.h>
#define N 15
using namespace std;
void exchSort(int *);//交换
void bullSort(int *);//冒泡
void seleSort(int *);//选择
void insert_x(int *,int);//插入
int main()
{ int x,i,n[N+2];//以便插入
for(i=0; i<N; i++)n[i]=rand()%100+9;
//exchSort(n);
//bullSort(n);
seleSort(n);
for(i=0; i<N; i++) cout<<n[i]<<" ";
cout<<"\ninput x to insert:",cin>>x;
insert_x(n,x);
cout<<"\ninserted:\n";
for(i=0; i<N+1; i++) cout<<n[i]<<" ";
}
//在有序数组中插入
void insert_x(int *n,int x)
{ int i,j,sign=0,t=0,moved=0;//倒序0正序1
sign=n[0]>n[N-1]?0:1;
for(i=0; i<N; i++)
{ if(sign==0)
{ if(x>n[i]) moved=1; }
else
{ if(x<n[i]) moved=1; }
if(moved)
{ t=i; break;}
}
if(moved)
{ for(j=N; j>=t; j--) n[j]=n[j-1];//数组元素后移一位
n[t]=x;
}else n[N]=x;//未发生移动,说明待插入数最小
}
//交换排序
void exchSort(int *n)
{ int i,j,t;
for(i=0; i<N-1; i++)
{ for(j=i+1; j<N; j++)
if(n[i]>n[j])
t=n[i],n[i]=n[j],n[j]=t;
}
}
//冒泡排序
void bullSort(int *n)
{ int i,j,t,flag=1;
for(i=0; i<N&&flag; i++)
{ flag=0;//监视器
for(j=0; j<N-1; j++)
if(n[j]<n[j+1]) //注意,冒泡排序只交换相邻两个
flag=1,
t=n[j],n[j]=n[j+1],n[j+1]=t;
}
}
void seleSort(int *n)
{ int i,j,k,t;
for(i=0; i<N-1; i++)
{ k=i;
for(j=i+1; j<N; j++)
if(n[k]<n[j])k=j;//注意是用k与j相比
if(k!=i)
t=n[i],n[i]=n[k],n[k]=t;
}
}