数组(包括排序)

定义与说明

冒泡排序法

#include "stdio.h"
#define N 5  

void main()
{
    //变量定义
    int i, j;
    int a[N], t;
    //提示信息
    printf("Please enter %d numbers:\n",N);
    //数据输入
    for(i=0; i<N; i++)
        scanf("%d", &a[i]);
    //排序算法
    for(i=0; i<N-1; i++)        //N-1次排序
        for(j=0; j<N-1-i; j++)  //第一次比较N-1次,逐次递减
        {
            if(a[j]>a[j+1])     //交换顺序(由小到大,由大到小改为<号)
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    //数据输出
    for(i=0; i<N; i++)
        printf("%d  ", a[i]);
}

选择排序法

#include "stdio.h"
#define N 5

void main()
{
    //变量定义
    int i, j, t;
    int a[N], k;
    //提示信息
    printf("Please enter %d numbers:\n",N);
    //数据输入
    for(i=0; i<N; i++)
        scanf("%d", &a[i]);
    //排序算法
    for(i=0; i<N-1; i++)        //N-1次选择
    {
        k = 0;                  //默认第一个数最大(小)

        for(j=1; j<N-i; j++)    //选择最大(小)数的角标
            if(a[k]<a[j])
                k = j;

        t = a[N-1-i];           //交换数据
        a[N-1-i] = a[k];
        a[k] = t;
    }
    //数据输出
    for(i=0; i<N; i++)
        printf("%d  ", a[i]);
}

数据插入

在有序数组指定位置插入任意N个数

#include "stdio.h"
#define N 5

void main()
{
    //变量定义
    int n[10+N] = {0,1,2,3,4,5,6,7,8,9};
    int a[N], k;
    int i;
    //提示信息与数据输入
    printf("Please enter the insertion location:\n");
    scanf("%d", &k);
    printf("Please enter %d numbers:\n",N);
    for(i=0; i<N; i++)
        scanf("%d", &a[i]);
    //数据插入
    for(i=10-1; i>=k; i--)
        n[i+N] = n[i];
    for(i=k; i<k+N; i++)
        n[i] = a[i-k];
    //数据输出
    for(i=0; i<10+N; i++)
        printf("%d  ", n[i]);
}

数据删除

#include "stdio.h"

void main()
{
    //变量定义
    int n[10] = {0,1,2,3,4,5,6,7,8,9};
    int k, i, j;
    //提示信息与数据输入
    printf("Please enter the data to be deleted:\n");
    scanf("%d", &k);
    //数据删除(只删除第一个位置)
    for(i=0; i<10; i++)
        if(n[i]==k)
        {
            for(j=i; j<10-1; j++)
                n[j] = n[j+1];
            break;
        }
    //数据输出
    if(i==10)
        printf("Data not found!\n");
    else
        for(i=0; i<10-1; i++)
            printf("%d  ", n[i]);    
}