插入新的数字重新排序

分析:将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(a[i+1]=a[i]),然后将数据插入即可。

代码:

#include<iostream>
using namespace std;
int main(){
int a[12];//定义用于存储数字的数组
int n;//输入的新的数字
int i=0,j=0,k=0;//排序用到的变量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //输入数据
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++){
if(a[j]<a[k]){
k=j;
}
}
a[0]=a[i];
a[i]=a[k];
a[k]=a[0];
}
cout<<"sorting order:"<<endl;
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
cout<<"please input a new one:";
cin>>n;
for(i=1;i<=10;i++){
if(a[i]>n){
k=n;
for(j=10;j>=i;j--){
a[j+1]=a[j];
}
a[i]=n;
break;
}
}
cout<<"new sorting order:"<<endl;
for(i=1;i<=11;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
return 0;
}



将已经排好序的数组中的数据逆置:

分析:实现顺序的逆置,需要找到数组中的中间的数组,以该数字作为中间点,对应的两边的数字交换即可。

#include<iostream>
using namespace std;
int main(){
int a[11];//定义用于存储数字的数组
int i=0,j=0,k=0;//排序用到的变量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //输入数据
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++){
if(a[j]<a[k]){
k=j;
}
}
a[0]=a[i];
a[i]=a[k];
a[k]=a[0];
}
cout<<"sorting order:"<<endl;
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
cout<<"Reverse order:"<<endl;
i=10;
for(j=1;j<=(i/2);j++){
a[0]=a[j];
a[j]=a[i+1-j];
a[i+1-j]=a[0];
}
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
return 0;
}

还有一种方法就是,在建立一个数组,直接在赋值过程中完成逆置,即:
#include<iostream>
using namespace std;
int main(){
int a[11];//定义用于存储数字的数组 
        int b[11];
int i=0,j=0,k=0;//排序用到的变量
cout<<"please input ten integers:"<<endl;
for(i=1;i<=10;i++){
cin>>a[i];
} //输入数据
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++){
if(a[j]<a[k]){
k=j;
}
}
a[0]=a[i];
a[i]=a[k];
a[k]=a[0];
}
cout<<"sorting order:"<<endl;
for(i=1;i<=10;i++){
cout<<a[i]<<" ";
} //输出数据
cout<<endl;
cout<<"Reverse order:"<<endl;
i=10;
for(j=1;j<=i;j++){
             b[j]=a[i+1-j];
}
for(i=1;i<=10;i++){
cout<<b[i]<<" ";
} //输出数据
cout<<endl;
return 0;
}

该方法与上面的方法相比,数据的计算步骤减少了,但是增加了系统空间的开销


C++实现数组的排序/插入重新排序/以及逆置操作的更多相关文章

  1. C#数组的排序(正序逆序)

    C#数组的排序(正序逆序) 这种排序 超级简单的 ! using System; using System.Collections.Generic; using System.Linq; using ...

  2. 02-Java 数组和排序算法

    一.Java 数组 1.数组定义:数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来做唯一标识. 2.数组的分类:一维.二维.三维. 3.数组声明及内存分配: 为数组分配内存空间:如果不分 ...

  3. PHP数组的排序函数

    对保存在数组中的相关数据进行排序是一件非常有意义的事情.在PHP中提供了很多函数可以对数组进行排序,这些函数提供了多种排序的方法.例如,可以通过元素的值或键及自定义排序等. ①简单的数组排序函数简单的 ...

  4. Java数组的排序算法

    在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...

  5. Shell数组以及排序算法(冒泡、直接选择、反转)

    Shell数组以及排序算法(冒泡.直接选择.反转) 目录 Shell数组以及排序算法(冒泡.直接选择.反转) 一.数组概述 1. 数组的定义 2. 下标的定义 3. 数组的特点 4. 数组定义的方法 ...

  6. iOS之数组的排序(升序、降序及乱序)

    #pragma mark -- 数组排序方法(升序) - (void)arraySortASC{ //数组排序 //定义一个数字数组 NSArray *array = @[@(3),@(4),@(2) ...

  7. javascript:算法之数组sort排序

    数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...

  8. 有1,2,3一直到n的无序数组,排序

    题目:有1,2,3,..n 的无序整数数组,求排序算法.要求时间复杂度 O(n), 空间复杂度O(1). 分析:对于一般数组的排序显然 O(n) 是无法完成的. 既然题目这样要求,肯定原先的数组有一定 ...

  9. PHP array_multisort—对多个数组或多维数组进行排序

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...

随机推荐

  1. SVN服务器端客户端配置, 及对比VSS的优势

    SVN 版本服务器搭配全过程详解(含服务端.客户端) SVN服务器端及客户端全套软件 SVN对比VSS的优势 两者区别:http://www.cnblogs.com/zxjyuan/archive/2 ...

  2. BestCoder Round #18(hdu5105)Math Problem(高中数学)

    最大值无非就是在两个端点或极值点处取得. 我注意讨论了a=0和b=0,却忽略了极值点可能不在L到R的范围内这一问题.被Hack了. #include<iostream> #include& ...

  3. unix的输入输出操作

    unix的输入输出操作 使用的头文件 #include <unistd.h> #include <stdio.h> 函数说明 ssize_t read(int fd, void ...

  4. C中的时间函数的用法

    C中的时间函数的用法    这个类展示了C语言中的时间函数的常用的用法. 源代码: #include <ctime>#include <iostream> using name ...

  5. Find The Multiple(DFS)

    Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal repr ...

  6. 【LeetCode】075. Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  7. BZOJ2724:[Violet 6]蒲公英

    浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...

  8. 聊聊“现在学习MFC有用吗?”

    我用MFC做了4年多,后来转到WPF也做了快5年.对于二者,不敢说精通,但应该算入门.结合自己经历,如果不考虑项目需求,我认为新手学习WPF或许更好点.有3点: 1)大家都知道最近几年Motorola ...

  9. Machine Learning的Python环境设置

    Machine Learning目前经常使用的语言有Python.R和MATLAB.如果采用Python,需要安装大量的数学相关和Machine Learning的包.一般安装Anaconda,可以把 ...

  10. Azure SLB + httpd + ILB + HAProxy + Atlas + MySQL

    为了测试一个环境,需要在Azure上搭建高可用的LAMP架构.但要求MySQL的中间件Atlas采用主备的模式.在数据中心一般采用Keepalive+VIP的模式,通过浮动地址对外提供服务. 但在云环 ...