方法一:傻的很直接的算法(当然是我脑子最直接想到的,反复用if语句,毫无美感【dog】)
假设数组a[11](数组中含有10个元素,待会插入一个为防止溢出,故设11个内存空间)已按升序排好,则很容易知道a[0]为最小值,a[9]为最大值,那么插入的数num无非就是三种情况:
①比最小值小或等于最小值。则num的值赋给a[0],数组原来的元素全部后退一位。很容易想到先把原来数组的值放到一个空数组中(b[11]),num给a[0]赋值完毕后,a[i+1]=b[i]。
②比最大值大。直接放入数组末尾即可。
③在最大值和最小值之间(或等于最大值,则认为大于倒数第二个,符合第三点)。找到num大于的那个元素的下标n,将num赋值给a[n],原来的往后排就行了。先故技重施,找个空数组b[11]将a[11]的元素放入,num给a[n]赋值完毕后,a[i+1]=b[i],此时i=n。
#include<stdio.h>
int main()
{
int a[11]={
2,3,4,5,6,7,8,13,18,20}