C#插入排序的问题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C#插入排序用c#写在插入前判断这个数的插入位置,然后将这个位置起的全部元素后移一位。返回一个数组。思路:原来的数组a按从小到大排序,插入一个insertNumber后,返回的数组result的长度是a的长度加1个,结果数组result的初始值是来自a数组,假设数组result的最后一个数是insertNumber,默认insertNumber是最大的。首先看insertNumber与第一个元素(最小的)比较,如果insertNumber小于第一个。说明insertNumber才是真正最小的,此时将insertNumber放在索引0位置,其他依次递推。如果insertNumber大于第一个,则查看insertNumber是否在result[i]与result[i+1]之间,如果是,那么我们将insertNumber插入i+1的位置从索引[i+2]开始依次想后面移动一位。代码如下(控制台程序):usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.IO;usingSystem.Security.Cryptography;namespaceRemainerMaths{classProgram{publicstaticvoidMain(string[]args){int[]a={1,3,5,7,10};int[]test={0,2,3,4,6,9,14,20};strings1=;for(intk=0;ktest.Length;k++){int[]result=AddOneElement(a,test[k]);for(inti=0;iresult.Length;i++){s1+=result[i]+,;}s1+=\n;}Console.WriteLine(s1);Console.ReadLine();}///summary///为初始数组(已经从小到大排列好)插入一个元素,形成一个新的数组并排序////summary///paramname=a初始数组,从小到大已经排列好/param///paramname=insertNumber插入的数/param///returns/returnspublicstaticint[]AddOneElement(int[]a,intinsertNumber){int[]result=newint[a.Length+1];a.CopyTo(result,0);//将insertNumber默认为最大值放在最大索引位置result[result.Length-1]=insertNumber;if(insertNumberresult[0]){for(intj=result.Length-1;j0;j--){result[j]=result[j-1];}result[0]=insertNumber;returnresult;}for(inti=0;iresult.Length-2;i++){if(insertNumber=result[i]&&insertNumber=result[i+1]){for(intj=result.Length-1;ji+1;j--){result[j]=result[j-1];}result[i+1]=insertNumber;break;}}returnresult;}}}程序运行结果:

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功