插入新的数字重新排序

分析:将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(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. BlockingQueue实现阻塞队列

    import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public cl ...

  2. sass语法(1)

    文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号 //文件后缀名为sass ...

  3. KVO与KVC的使用(转)

    转自http://www.cnblogs.com/mybkn/archive/2013/05/29/3104166.html KVO: 在看KVO之前,有必要先了解下KVC,即,Key-Value C ...

  4. LeetCode Predict the Winner

    原题链接在这里:https://leetcode.com/problems/predict-the-winner/description/ 题目: Given an array of scores t ...

  5. 冒泡算法-bubble

    冒泡算法在数据只有几个无序时是最快的算法,但是如果全部无序的话就变成了最慢的算法了,时间复杂度为O(n^2) public class bubbleSort { public static void ...

  6. DOS命令查询当前文件夹中文件数量

    太牛X,太实用,因此单独记下 1. 仅统计文件数量 dir /b /a-d | find /v /c "&#@" 2. 统计文件和目录总数量 dir /b | find / ...

  7. as3设计模式乱用之工厂模式

    好久没写技术相关的日记了,一忙,二懒,三则被这单调的生活熏得没什么感悟. 其实这篇日记早就想写了,项目开发初期的时候,带学生.经常看到那种乱用设计模式的现象.一方面,公司面试人的时候喜欢问设计模式,另 ...

  8. Python函数-complex()

    complex([real[, imag]]) 作用: 创建一个值为real + imag * j的复数或者转化一个字符串或数为复数.如果第一个参数为字符串,则不需要指定第二个参数. 参数real: ...

  9. [转]angular的路由机制

    在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而a ...

  10. 洛谷 3803 【模板】多项式乘法(FFT)

    题目:https://www.luogu.org/problemnew/show/P3803 第一道FFT! https://www.cnblogs.com/zwfymqz/p/8244902.htm ...