标签:
/* 问题描述:编写在数组中存储10个数字的程序,并通过使用快速排序算法来排序。 */ using System; using System.Text; class Merge_Sort { private int[]arr=new int[20]; //定义数组,你输入数字,接受存储的数组 private int[]dest=new int[20]; //在归并排序中用来存储已经排序的数组,就是咱说的新数组. private int cmp_count; //比较总次数 private int mov_count; //移动总次数 //数组元素个数 public int n; //****************构造方法 public Merge_Sort() { cmp_count=0; mov_count=0; } //用户输入数据方法 void read() { while(true) { Console.WriteLine("请输入数组的元素个数:"); string s=Console.ReadLine(); n=Int32.Parse(s); if(n<=20) break; else Console.WriteLine("\n数组的最大元素个数为20.\n"); } Console.WriteLine("\n---------------------------------"); Console.WriteLine("-----------请输入数组元素---------"); Console.WriteLine("---------------------------------"); //获得数组元素 for(int i=0;i<n;i++) { Console.Write("<"+(i+1)+">"); string s=Console.ReadLine(); arr[i]=Int32.Parse(s); } } //交换两个数组索引的方法 void swap(int x,int y) { int temp; temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } /**************归并排序算法****************/ public void m_sort(int low,int high) { if(low>=high) return; else { int mid=(low+high)/2; m_sort(low,mid); m_sort(mid+1,high); merge(low,mid,high); } } public void merge(int low,int mid,int high) { int i=low; int j=mid+1; int k=low; while((i<=mid)&&(j<=high)) { if(arr[i]<=arr[j]) { dest[k]=arr[i]; k++; i++; } else { dest[k]=arr[j]; k++; j++; } } while(j<=high) { dest[k]=arr[j]; k++; j++; } while(i<=mid) { dest[k]=arr[i]; k++; i++; } //Array.Copy(dest,arr,arr.Length); for(i=low;i<=high;i++) { arr[i]=dest[i]; } } //显示方法 void display() { Console.WriteLine("\n------------------------------------"); Console.WriteLine("---------已经排序后的数组元素为------"); Console.WriteLine("------------------------------------"); for(int j=0;j<=n;j++) { Console.Write(arr[j]+" "); //Console.Write(dest[j]+" "); } //Console.WriteLine("\n比较的总次数为:"+cmp_count); //Console.WriteLine("\n移动的总次数为:"+mov_count); } int getSize() { return (n); } public static void Main(string[]args) { Merge_Sort mySort=new Merge_Sort(); mySort.read(); mySort.m_sort(0,mySort.n-1); mySort.display(); Console.WriteLine("\n\n按任意键退出."); Console.Read(); } }
标签:
原文地址:http://blog.csdn.net/zhangchen124/article/details/51619554