用冒泡法将一个数组排成升序的函数-

编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。
主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。

/*

输入10 个数(空格隔开) : 36 45 89 87 94 16 34 58 62 44

16 34 36 44 45 58 62 87 89 94

输入待插入的数 : 100

16 34 36 44 45 58 62 87 89 94 100

Press any key to continue

*/

#include <stdio.h>

void sub1(int a[], int n) {
int i,j,t;
for(i = 0; i < n - 1; ++i) {
for(j = i + 1; j < n; ++j) {
if(a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}

void sub2(int a[], int n, int num) {
int i,j,flag = 1;
for(i = 0; i < n; ++i) {
if(a[i] > num) {
flag = 0;
for(j = n; j > i; --j)
a[j] = a[j - 1];
a[i] = num;
break;
}
}
a[n] = num;
}

void show(int a[], int n) {
int i;
for(i = 0; i < n; ++i)
printf("%d ",a[i]);
printf("\n");
}

int main() {
int a[11],i,num;
printf("输入10 ä¸ªæ•°(空格隔开) : ");
for(i = 0; i < 10; ++i) scanf("%d",&a[i]);
sub1(a,10);
show(a,10);
printf("输入待插入的数 : ");
scanf("%d",&num);
sub2(a,10,num);
show(a,11);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-01
#include<stdio.h>

void SUB1(int a[],int n){
    int i=0,tem,k;
    for(i=0;i<n;i++)
        for(k=i+1;k<n;k++)
            if(a[k]<a[i]){
                tem=a[k];
                a[k]=a[i];
                a[i]=tem;
            }
    return ;
}

void SUB2(int a[],int n){
    a[10]=n;
    return ;
}

int main(){
    int i,a[10],n;
    printf("请输入10个整数\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    SUB1(a,10);
    printf("排序之后的序列为:");
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    printf("\n");
    printf("请输入要插入的数字\n");
    scanf("%d",&n);
    SUB2(a,n);
    SUB1(a,11);
    printf("排序之后的序列为:");
    for(i=0;i<11;i++)
        printf("%d ",a[i]);
    printf("\n");
    return  0;
}

追问

可不可以用java代码编写一下

相似回答