输入一组从小到大排序的数字,从中插入一个数字不打破排序。我输入的1 2 3 5,插入的是4
,经过前面代码的运行此时intarry[1,2,3,5,0]
if (insertnum >= intarry[index] && insertnum <= intarry[index + 1])
{
/将数字后移/
do
{
intarry[index2] = intarry[index1];
index2--;//index2为数组最后一个元素的位置
index1--;//index1为数组倒数第二个元素的位置
} while (index < index1);
intarry[index + 1] = insertnum;
//break;
}
此时是index=3,insertnum=4,进入了判断。
下面是全部代码
using System;
namespace 1
{
class Program
{
static void Main(string[]args)
{
string str = Console.ReadLine();
string[] strarry = str.Split(" ");
int[] intarry = new int[strarry.Length + 1];
int index = 0;
int index1 = intarry.Length - 2;
int index2 = intarry.Length - 1;
for (int i = 0; i < strarry.Length; i++)
{
intarry[i] = Convert.ToInt32(strarry[i]);
}
int insertnum = Convert.ToInt32(Console.ReadLine());
for (; index < strarry.Length; index++)
{
if (insertnum >= intarry[index] && insertnum <= intarry[index + 1])
{
/*将数字后移*/
do
{
intarry[index2] = intarry[index1];
index2--;//index2为数组最后一个元素的位置
index1--;//index1为数组倒数第二个元素的位置
} while (index < index1);
intarry[index + 1] = insertnum;
//break;
}
else if (insertnum > intarry[intarry.Length - 2])
{
intarry[intarry.Length - 1] = insertnum;
break;
}
else
{
}
}
foreach (int temp in intarry)
{
Console.Write(temp);
}
}
}
}