已知一个无序数组a[ n ],试编写一算法,实现数组的升序排列。

2020-09-25 社会 106阅读
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
#include "conio.h"
#include "windows.h"
#define N 8
int a[N];
void init(int a[]) //将排序的数字输入
{
int i;
printf("请输入[%d]个数字:\n",N);
for(i=0;i scanf("%d",&a[i]);
}
void print(int a[]) // 打印
{
int i;
for(i=0;i printf("%5d",a[i]);
printf("\n\n");
}
void sort(int a[])//排序
{
int i,j,x;
for(i=1;i {
x=a[i];
j=i-1;
while((j>=0)&&(a[j]>x))
{
a[j+1]=a[j];
j--;
}

a[j+1]=x;
}
}
/*void main()
{
printf("现在开始排序!\n");
init(a);
system("cls");
print(a);
sort(a);
print(a);
}*/
void main()
{
char ch;
int h,temp=0;
labl:
system("cls");
printf("\t\t===========================================\n\n");
printf("\t\t---------------【1】.将排序的数字输入----\n\n");
printf("\t\t---------------【2】.排序----------------\n\n");
printf("\t\t---------------【3】.打印----------------\n\n");
printf("\t\t---------------【4】.退出----------------\n\n");
talla:
printf("请输入数字选项:_");
scanf("%d",&h);
switch(h)
{

case 1:

case 1: loop_1:
init(a);
printf("\n 添加成功 !\n");
printf("是否重新 【Y/N】:_");
fflush(stdin);
ch=getchar();
printf("%c",ch);
if(ch=='y'||ch=='Y')
{
Sleep(500);
goto loop_1;
}
else{
printf("\n是否返回 【Y/N】:_");
fflush(stdin);
ch=getchar();
printf("%c",ch);
if(ch=='y'||ch=='Y')
{
Sleep(500);
goto loop_1;
}
else{
printf("\n谢谢 使用 !\n");
exit(0);
}
}
case 2:
printf("\n未排序数字(一共有【%d】个数字) :\n",N);
print(a);
printf("\n排序后的数字:\n");
sort(a);
print(a);
printf("\n是否返回菜单 【Y/N】:\n");
fflush(stdin);
ch=getchar();
printf("%c",ch);
if(ch=='y'||ch=='Y')
{
printf("\n正在返回菜单.....!\n");
Sleep(500);
goto labl;
}
else
{
printf("谢谢 使用 !\n");
exit(0);
}

case 3:
printf("\n一共有【%d】个数字 :\n",N);
print(a);
printf("\n 是否返回菜单 【Y/N】:_");
fflush(stdin);
ch=getchar();
printf("%c",ch);
if(ch=='y'||ch=='Y')
{
printf("正在返回菜单.....!");
Sleep(500);
goto labl;
}
else
{
printf("谢谢 使用 !\n");
exit(0);
}
case 4: printf("谢谢 使用"); exit(0);
default: printf("输入 有误 请重 输入 !");
goto talla;

}
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com