先调用显示数组的函数show,显示数组a的内 容。然后调用排序函数insertSort,实现对数 组a的升序排列,再次调用show函数显示结果
使用插入排序数组:
/* Note:Your choice is C IDE */
#include "stdio.h"
void show(int a[]){
int i;
for( i=0;i<5;i++){
printf("%3d",a[i]);
}
printf("\n");
}
void insertSort(int a[],int n){
int i,j;
for( i= 1; i<n; i++){
if(a[i] < a[i-1]){
int j= i-1;
int x = a[i];
while(j>-1 && x < a[j]){
a[j+1] = a[j];
j--;
}
a[j+1] = x;
}
}
}
void main(){
int a[5] = {4,3,2,1,5};
printf("排序前:");
show(a);
insertSort(a,5);
printf("排序后:");
show(a);
}
直接用algorithm中的sort函数对数组进行排序
忘记C++有没有排序的函数了,
不过,你这个需求很简单啊,show不就是输出数组中所有的元素吗?
还有insertSort排序函数,自己不会写,百度一大堆代码,复制过来稍微改成自己需求的就行。
#include "stdio.h"
//插入排序
void insertSort(int a[10]){
int i,temp,pos,k;
for(i=1;i<10;i++)
{
temp=a[i];
pos = i-1;
//把前面大于temp的数据往后移
while((pos>=0) && (temp<a[pos])){//后面的元素小于前面的元素
a[pos+1]=a[pos]; //后面一个元素等于前面一个元素的值
pos--;
}
//把temp的值插入到pos+1的位置
a[pos+1]=temp;
printf("后移结束,把数据插入到pos+1的位置\n");
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
}
printf("排序之后:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
}
}
void main()
{
int a[10]={89,1,64,35,74,21,100,99,1000,2};
int i,temp,pos,k;
printf("排序之前:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
for(i=1;i<10;i++)
{
temp=a[i];
pos = i-1;
//把前面大于temp的数据往后移
while((pos>=0) && (temp<a[pos])){//后面的元素小于前面的元素
a[pos+1]=a[pos]; //后面一个元素等于前面一个元素的值
//打印排序过程
printf("i=%d,temp=%d,pos=%d\n",i,temp,pos);
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
//-------------------------------------------------
pos--;
}
//把temp的值插入到pos+1的位置
a[pos+1]=temp;
printf("后移结束,把数据插入到pos+1的位置\n");
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
}
printf("排序之后:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
}