亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

C語言排序

將整形數組按從小到大排序,然后在這個數組中插入一個新的數,使得這個數組仍然有序,用C語言怎么做,求程序和解釋

正在回答

2 回答

#include<stdio.h>

#define N 5

int main()

{

? ? int i,j,p,n,temp;

? ? int a[N],b[N+1];//a[N]為原數組,b[N+1]為插入后的數組


? ? printf("請輸入%d個數\n",N);

? ? for(i=0;i<N;i++)

? ? ? ?scanf("%d",&a[i]);//a[N]的輸入


? ? for(i=0;i<N-1;i++)//選擇法排序,按升序排好a[N]

? ? {

? ? ? ? ?p=i;

? ? ? ? ?for(j=i+1;j<N;j++)

? ? ? ? ? ? if(a[i]>a[j])

? ? ? ? ? ? ? ?p=j;

? ? ? ? ? ? if(p!=j)

? ? ? ? ? ? {

? ? ? ? ? ? ? ?temp = a[p];

? ? ? ? ? ? ? ?a[p] = a[i];

? ? ? ? ? ? ? ?a[i] = temp;

? ? ? ? ? ? }

? ? }


? ? for(i=0;i<N;i++)//輸出a[N]的每一項

? ? ? ? printf("%d ",a[i]);

? ? ? ? printf("\n");


? ? printf("請輸入一個數\n");

? ? scanf("%d",&n);//插入一個數

? ? for(i=0;i<N;i++)

? ? ? ?b[i] = a[i];

? ? b[N] = n; //b[N+1]的輸入


? ? for(i=0;i<N;i++)//選擇法排序,按升序排好b[N+1]

? ? {

? ? ? ? ?p=i;

? ? ? ? ?for(j=i+1;j<N+1;j++)

? ? ? ? ? ? if(b[i]>b[j])

? ? ? ? ? ? ? ?p=j;

? ? ? ? ? ? if(p!=j)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? temp = b[p];

? ? ? ? ? ? ? ? ? b[p] = b[i];

? ? ? ? ? ? ? ? ? b[i] = temp;

? ? ? ? ? ? }

? ? }


? ? for(i=0;i<N+1;i++)//輸出b[N+1]的每一項

? ? ? ? printf("%d ",b[i]);

? ? ? ? printf("\n");

}



各處都有解釋,不懂再問我!

1 回復 有任何疑惑可以回復我~
#1

qq_晨曦Flame_04116129

N的值可以隨便改
2016-11-10 回復 有任何疑惑可以回復我~
#2

滿天星17 提問者

可以這樣做嗎? 1、首先在數組中找到要插入元素的位置 2、將ai,ai+1……an-1依次后移一個位置,留出位置i 3、將新元素存放到第i個位置 求程序
2016-11-11 回復 有任何疑惑可以回復我~

用冒泡排序寫個程序,多謝

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

C語言排序

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號