假定有一个数组,已经存放有互不相同的整数。输入一个数,要求从数组删除与该数相同的元素,并将其后的元素逐个向前替补,最后一个元素置0。输出删除后的数组。如原数组中无此数,则输出“无此数”。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _5_3 { class Program { static void Main(string[] args) { int[] dA; int i,j,dB; int ia; dA = new int[10]; Random ran = new Random(); for (i = 0; i < dA.Length; i++) { dA[i] = Convert.ToInt32(ran.Next(1, 20)); Console.Write("{0} ",dA[i]); } Console.WriteLine("请输入一个数字:"); dB = Convert.ToInt32(Console.ReadLine()); ia = 0; for (i = 0; i < dA.Length; i++) { if (dA[i] == dB) { dA[i] = 0; ia++; for (j = i + 1; j <= dA.Length-ia; j++) { dA[j - 1] = dA[j]; } dA[dA.Length - ia] = 0; i--; } } if (ia == 0) { Console.WriteLine("没有找到次数!"); } else { Console.WriteLine("删除相同元素后:"); for (i = 0; i < dA.Length; i++) { Console.Write("{0} ", dA[i]); } } //Console.WriteLine("\n重新排列后:"); //for (i = 0; i < dA.Length; i++) //{ // Console.Write("{0,2}", dA[i]); //} //for (i = 0; i < dA.Length; i++) //{ // for (j = 0; j < dA.Length - 1; j++) // { // if (dA[j] == 0) // { // dA[j] = dA[j] + dA[j + 1]; // dA[j + 1] = dA[j] - dA[j + 1]; // dA[j] = dA[j] - dA[j + 1]; // } // } //} //for (i = 0; i < dA.Length; i++) //{ // Console.Write("{0} ", dA[i]); //} Console.ReadKey(); } } }
老师优化后效率高了很多。