«

97~98、 2道题 利用数组实现插入排序 & 习题

点亮灯 发布于 阅读:55 C++


1,请编程实现数组的插入排序(从小到大),然后请用户再输入一个数,将这个数插入到排好顺序的数组中,注意数组定义时长度要够用,不要产生越界。

//请编程实现数组的插入排序(从小到大),然后请用户再输入一个数,将这个数插入到排好顺序的数组中,注意数组定义时长度要够用,不要产生越界
#include<iostream>
using namespace std;
int main() {
    int a[8]{13,46,648,4,465};
    int b;
    int n =5;

    for (int i = 1; i < n; i++) {
        for (int j = i - 1; j >= 0; j--) {
            if (a[j]>a[j+1]) {
                b = a[j];
                a[j] = a[j + 1];
                a[j + 1] = b;

            }
            else {
                break;
            }
        }
    }
    for (int i = 0; i < n ; i++) {
        cout << a[i]<<'\t';
    }
    cout << endl;
    cin >> a[n];
    n++;
    for (int i = n - 2; i >= 0; i--) {
        if (a[i] > a[i + 1]) {
            b = a[i+1];
            a[i + 1] = a[i];
            a[i] = b;
        }

    }
    for (int i = 0; i < n; i++) {
        cout << a[i] << '\t';
    }
    cout << endl;
    system("pause");//卡屏函数
    return 0;
}

2,请编程直接实现数组的插入排序(从大到小)

//请编程直接实现数组的插入排序(从大到小]
#include<iostream>
using namespace std;
int main() {
    int a[5]{6,46,648,4,465};
    int b,c ;
    int n = sizeof a / sizeof a[1];
    for (int i = 1; i < n; i++) {
        for (int j = i - 1; j >= 0; j--) {
            if (a[j]<a[j+1]) {
                b = a[j];
                a[j] = a[j + 1];
                a[j + 1] = b;

            }
            else {
                break;
            }
        }
    }
    for (int i = 0; i < n ; i++) {
        cout << a[i]<<'\t';
    }
    cout << endl;
    system("pause");//卡屏函数
    return 0;
}