技术要点:这个过程很简单,就是首先将第一条记录的关键字和第二个关键字进行比较,要是为逆序,则将数据交换,然后就是第二个和第三个,以此类推。直至第N-1个记录和N个记录的关键字进行过比较为止。
staticvoidMain(string[]args){//冒泡排序BubbleSorterb=newBubbleSorter();int[]list={2,55,44,21,35,62,22,41,14,28,95,100};b.Sort(list);foreach(variteminlist){Console.WriteLine(item);}Console.ReadLine();}建立的BubbleSorter类
publicclassBubbleSorter{publicvoidSort(int[]list){inti,j,temp;booldone=false;j=1;while((j
2、选择排序
技术要点:这个选择排序的主要操作就是关键字之间的比较,很显然是从N个数据中进行简单的排序,就是从1至N-1,进行N-1趟选择操作。
staticvoidMain(string[]args){//选择排序SelectionSorters=newSelectionSorter();int[]list={2,55,44,21,35,62,22,41,14,28,95,100};s.Sort(list);foreach(variteminlist){Console.WriteLine(item);}Console.ReadLine();}建立的SelectionSorter类
publicclassSelectionSorter{privateintmin;publicvoidSort(int[]list){for(inti=0;i 3、插入排序 技术要点:实现插入排序,主要是先找到一个有序序列,然后将下一个关键字插入上述的有序序列,再从剩下的关键字中选取下一个插入对象,反复执行直到整个序列有序为止。 classProgram{staticvoidMain(string[]args){InsertionSorteri=newInsertionSorter();int[]list={54,12,11,41,25,36,5,74,54,100};i.Sort(list);foreach(variteminlist){Console.WriteLine(item);}Console.ReadKey();}} 建立的InsertionSorter类 publicclassInsertionSorter{publicvoidSort(int[]list){for(inti=1;i 4、希尔排序 技术要点:先将整个待排序记录序列分割成若干个子序列分别进行直接插入排序,待整个序列中的记录‘基本有序’时再对全体记录进行一次直接插入排序。特点是:子序列的构成不是简单的‘逐段分割’,而是将相隔某个‘增量’的记录组成一个子序列。 classProgram{//希尔排序算法staticvoidMain(string[]args){ShellSorters=newShellSorter();int[]list={12,45,84,21,5,36,26,56,95,41,20};s.Sort(list);foreach(variteminlist){Console.WriteLine(item);}Console.ReadKey();}}建立的ShellSorter类 publicclassShellSorter{publicvoidSort(int[]list){intinc;for(inc=1;inc<=list.Length/9;inc=3*inc+1);//遍历当前数组。for(;inc>0;inc/=3)//遍历当前值。{for(inti=inc+1;i<=list.Length;i+=inc){intt=list[i-1];intj=i;//获取值。while((j>inc)&&(list[j-inc-1]>t))//希尔排序。{list[j-1]=list[j-inc-1];//交换数据。j-=inc;}list[j-1]=t;}}}}