C++程序设计 (第三版)谭浩强 习题5.4
习题 5.4 有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:
#include <iostream>
using namespace std;
int main(){
int n[10] = {12, 34, 56, 67, 68, 79, 80, 88, 95};
int num, i, j;
cout<<"Please enter insert number: ";
cin>>num;
for(i = 0; i < 9; i++){
if(num < n[i]){
for(j = 9; j >= i; n[j] = n[j-1], j--);
n[i] = num;
break;
}
else if(num>n[8]){
n[9] = num;
break;
}
}
for(i = 0, cout<<"New array: "; i < 10; cout<<n[i++]<<' ');
cout<<endl;
system("pause");
return 0;
}
方法2:使用指针,函数的模块化设计,分配内存
#include <iostream>
#include <iomanip>
using namespace std;
const int N = 11;
void inputArr(int *arr, int n){
cout<<"Enter "<<n<<" Numbers: ";
for(int i = 0; i < n; i++){
cin>>arr[i];
}
}
void ascendingSort(int *arr, int n){
int temp;
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
void outputArr(int *arr, int n){
for(int i = 0; i < n; i++){
cout<<arr[i]<<" ";
}
cout<<endl;
}
void insertNum(int *arr, int n){
int insNum;
cout<<"Enter Insert Number: ";
cin>>insNum;
int j;
for(int i = 0; i < n; i++){
if(insNum < arr[i] && i != n - 1){
for(j = n - 1; j > i; j--){
arr[j] = arr[j-1];
}
arr[j] = insNum;
break;
}
if(insNum > arr[i] && i == n - 2){
arr[i+1] = insNum;
break;
}
}
}
int main(){
int *arr = new int[N];
inputArr(arr, N-1);
cout<<"Original Array: ";
outputArr(arr, N-1);
ascendingSort(arr, N-1);
cout<<"Ascending Sort: ";
outputArr(arr, N-1);
insertNum(arr, N);
cout<<"New Array: ";
outputArr(arr, N);
delete(arr);
system("pause");
return 0;
}