当前位置: 首页 > news >正文

深圳建设交易中心网站企业网站的综合要求

深圳建设交易中心网站,企业网站的综合要求,抖音seo排名优化,成都建设银行官方网站排序算法常见的有直接排序、冒泡排序、快速排序、基数排序、归并排序等#xff0c;下面是实现的代码#xff0c;仅供参考。 #region DirectSort/// summary/// 直接排序./// 第一次从R[0]~R[n-1]中选取最小值#xff0c;与R[0]交换#xff0c;/// 第二次从R[1]~R[n… 排序算法常见的有直接排序、冒泡排序、快速排序、基数排序、归并排序等下面是实现的代码仅供参考。 #region DirectSort/// summary/// 直接排序./// 第一次从R[0]~R[n-1]中选取最小值与R[0]交换/// 第二次从R[1]~R[n-1]中选取最小值与R[1]交换..../// 第i次从R[i-1]~R[n-1]中选取最小值与R[i-1]交换...../// 第n-1次从R[n-2]~R[n-1]中选取最小值与R[n-2]交换/// 总共通过n-1次得到一个按排序码从小到大排列的有序序列·/// /summary/// param namedata/param/// returns/returnsprivate static int DirectSort(int[] data){int min 0;int k 0;int count 0;for (int i 0; i data.Length; i){min data[i];k i;for (int j i; j data.Length; j){if (min data[j]){min data[j];k j;}count;}data[k] data[i];data[i] min;}return count;}#endregion#region BubbleSort/// summary/// 冒泡排序./// 重复地走访过要排序的数列一次比较两个元素/// 如果他们的顺序错误就把他们交换过来。/// 走访数列的工作是重复地进行直到没有再需要交换/// 也就是说该数列已经排序完成。/// 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端故名。/// /summary/// param namedata/paramprivate static int BubbleSort(int[] data){int min 0;int count 0;for (int i 0; i data.Length; i){for (int j 0; j data.Length - 1 - i; j){if (data[j] data[j 1]){min data[j 1];data[j 1] data[j];data[j] min;}count;}}return count;}#endregion#region QuickSort/// summary/// 快速排序./// 通过一趟排序将要排序的数据分割成独立的两部分/// 其中一部分的所有数据都比另外一部分的所有数据都要小/// 然后再按此方法对这两部分数据分别进行快速排序/// 整个排序过程可以递归进行以此达到整个数据变成有序序列。/// /summary/// param namedata/param/// returns/returnsprivate static int QuickSort(int[] data){int count 0;QuickSortInner(data, 0, data.Length - 1, ref count);return count;}private static void QuickSortInner(int[] data, int left, int right, ref int count){if (left right) { return; }//完成一次单元排序int middle QuickSortUnit(data, left, right, ref count);//对左边单元进行排序QuickSortInner(data, left, middle - 1, ref count);//对右边单元进行排序QuickSortInner(data, middle 1, right, ref count);}private static int QuickSortUnit(int[] data, int left, int right, ref int count){int key data[left];while (left right){//自右端向左端查找小于key的值for (; ; right--){if (data[right] key || right left){//右边有小于key的值直接将该值放到左边//此时right位置的空间空出,留作放置从左边比较出的大于key的值。//如果右索引已经到达了左边rightleftdata[left] data[right]是同数据交换不受影响.data[left] data[right];count;break;}}//自左端向右端查找大于key的值for (; ; left){if (data[left] key || left right){//左边有大于key的值直接将该值放到右边//此时left位置的空间空出,留作放置从右边比较出的小于key的值或者用来最后放置key.//如果左索引已经到达了右边leftrightdata[right] data[left]是同数据交换不受影响.data[right] data[left];count;break;}}}data[left] key;return right;}#endregion#region RadixSort/// summary/// 基数排序(此处采用LSD法)./// 属于“分配式排序”distribution sort又称“桶子法”bucket sort或bin sort/// 顾名思义它是透过键值的部份资讯将要排序的元素分配至某些“桶”中藉以达到排序的作用/// 基数排序法是属于稳定性的排序其时间复杂度为O (nlog(r)m)其中r为所采取的基数而m为堆数/// 在某些时候基数排序法的效率高于其它的稳定性排序法。/// 基数排序又分MSD和LSD。/// 最高位优先(Most Significant Digit first)法简称MSD法/// 先按k1排序分组同一组中记录关键码k1相等再对各组按k2排序分成子组/// 之后对后面的关键码继续这样的排序分组直到按最次位关键码kd对各子组排序后。/// 再将各组连接起来便得到一个有序序列。/// 最低位优先(Least Significant Digit first)法简称LSD法/// 先从kd开始排序再对kd-1进行排序依次重复直到对k1排序后便得到一个有序序列。/// /summary/// param namedata/param/// returns/returnsprivate static int RadixSort(int[] data){var bucketList new ListListint();for (int i 0; i 10; i){bucketList.Add(new Listint());}int count 0;int positionValue 0;int maxPosition 1;//计算最大位数for (int i 0; i data.Length; i){var str data[i].ToString();if (str.Length maxPosition){maxPosition str.Length;}}for (int position 0; position maxPosition; position){//分桶for (int i 0; i data.Length; i){positionValue 0;var str data[i].ToString();var index (str.Length - 1) - position;// 计算出对应位数的字符串的值if (index 0 str.Length index){positionValue int.Parse(str.Substring(index, 1));}bucketList[positionValue].Add(data[i]);count;}//合并桶int j 0;foreach (var bucket in bucketList){foreach (var val in bucket){data[j] val;}//清空桶bucket.Clear();}}return count;}#endregion#region MergeSort/// summary/// 归并排序./// 该算法是建立在归并操作上的一种有效的排序算法,/// 该算法是采用分治法Divide and Conquer的一个非常典型的应用。/// 将已有序的子序列合并得到完全有序的序列即先使每个子序列有序再使子序列段间有序。/// 若将两个有序表合并成一个有序表称为二路归并。/// 归并过程为/// 比较a[i]和a[j]的大小若a[i]≤a[j]则将第一个有序表中的元素a[i]复制到r[k]中并令i和k分别加上1/// 否则将第二个有序表中的元素a[j]复制到r[k]中并令j和k分别加上1如此循环下去直到其中一个有序表取完/// 然后再将另一个有序表中剩余的元素复制到r中从下标k到下标t的单元。/// 归并排序的算法我们通常用递归实现先把待排序区间[s, t]以中点二分接着把左边子区间排序/// 再把右边子区间排序最后把左区间和右区间用一次归并操作合并成有序的区间[s, t]。/// /summary/// param namedata/param/// returns/returnsprivate static int MergeSort(int[] data){int count 0;MergeSortInner(data, 0, 1, ref count);return count;}/// summary/// 二路归并./// 原理将两个有序表合并成一个有序表/// /summary/// param namedata/param/// param namefirstStart第一个有序表的起始下标/param/// param namesecondStart第二个有序表的起始下标/param/// param namesecondTail第二个有序表的结束下标/paramprivate static void MergeSortUnit(int[] data, int firstStart, int secondStart, int secondTail, ref int count){int[] newArr new int[secondTail - firstStart 1];int firstIndex firstStart, secondIndex secondStart, newIndex 0;while (firstIndex secondStart secondIndex secondTail){//自小而大合并到一个序列中if (data[firstIndex] data[secondIndex]){newArr[newIndex] data[firstIndex];}else{newArr[newIndex] data[secondIndex];}newIndex;count;}for (; firstIndex secondStart; firstIndex, newIndex){newArr[newIndex] data[firstIndex];count;}for (; secondIndex secondTail; secondIndex, newIndex){newArr[newIndex] data[secondIndex];count;}Array.Copy(newArr, 0, data, firstStart, newArr.Length);}/// summary/// 归并排序/// /summary/// param namedata/param/// param namefirstStart第一个序列的起始索引/param/// param namelen每次归并的有序集合的长度/paramprivate static void MergeSortInner(int[] data, int firstStart, int len, ref int count){int size data.Length;//归并排序具体工作原理如下(假设序列共有n个元素)://将序列每相邻两个数字进行归并操作merge)形成floor(n/2)个序列排序后每个序列包含两个元素//将上述序列再次归并形成floor(n/4)个序列每个序列包含四个元素//将上述序列继续归并形成floor(n/K)个序列(其中k为2的t次方),直到所有元素排序完毕。int k len 1;//新标准序列的组数int groupStandard size / k;//除了标准序列外剩余的元素个数int leftElement size % k; // size (k - 1);//归并到只剩一个有序集合的时候结束算法if (groupStandard 0){return;}int secondStart 0;int secondTail 0;//进行一趟归并排序for (int i 0; i groupStandard; i){firstStart i * 2 * len;secondStart firstStart len;secondTail (len 1) firstStart - 1;MergeSortUnit(data, firstStart, secondStart, secondTail, ref count);}//将剩下的数和倒数第一个有序集合归并if (leftElement ! 0){firstStart size - leftElement - 2 * len;secondStart size - leftElement;secondTail size - 1;MergeSortUnit(data, firstStart, secondStart, secondTail, ref count);}//递归执行下一趟归并排序MergeSortInner(data, 0, 2 * len, ref count);}#endregion以上各排序算法的解释主要来自于百度仅供参考。 static void Main(string[] args){var data new int[] { 123, 45, 21, 456, 98, 40, 32, 1435, 76, 485, 89, 876, 908, 345, 123 };Console.WriteLine(string.Join(,, data));//直接排序Console.WriteLine(直接排序);var dataTemp new int[data.Length];data.CopyTo(dataTemp, 0);var count DirectSort(dataTemp);Console.WriteLine(count 次 string.Join(,, dataTemp));//冒泡排序Console.WriteLine(冒泡排序);dataTemp new int[data.Length];data.CopyTo(dataTemp, 0);count BubbleSort(dataTemp);Console.WriteLine(count 次 string.Join(,, dataTemp));//快速排序Console.WriteLine(快速排序);dataTemp new int[data.Length];data.CopyTo(dataTemp, 0);count QuickSort(dataTemp);Console.WriteLine(count 次 string.Join(,, dataTemp));//基数排序Console.WriteLine(基数排序);dataTemp new int[data.Length];data.CopyTo(dataTemp, 0);count RadixSort(dataTemp);Console.WriteLine(count 次 string.Join(,, dataTemp));//归并排序Console.WriteLine(归并排序);dataTemp new int[data.Length];data.CopyTo(dataTemp, 0);count MergeSort(dataTemp);Console.WriteLine(count 次 string.Join(,, dataTemp));Console.ReadLine();}输出结果如下图 转载请注明出处 转载于:https://www.cnblogs.com/sparkleDai/p/7604908.html
http://www.yutouwan.com/news/246955/

相关文章:

  • 网络技术培训内容网站如何做seo推广方案
  • 简述电子商务网站建设流程赚钱做任务的网站
  • 个人建站提供软件下载苏州建设工程公司
  • ppt做的好的网站有哪些wordpress如何自定义导航栏
  • 广州网站建设 推广公司哪家好做一个手机app大概需要多少钱
  • 商务网站规划与建设心得个人兴趣网站设计
  • html5 珠宝网站广东省自然资源厅吴鋆
  • 官网查询网站智慧旅游网站建设方案ppt
  • 网站建设需要考哪些证外贸购物网站制作
  • 网站硬件费用陕西建设部网站官网
  • 最出名的网站建设公司学历提升
  • 国外网站 icp备案广告设计好找工作吗
  • 系部网站开发项目的目的邯郸网站建设选哪家
  • 本地扬中网站建设wordpress阅读数 显示k
  • 建设一个网站需要做哪些事情钦州网站建设公司
  • 外贸网站建设软件有哪些知乎seo排名帝搜软件
  • 做新零售这些注册网站和找货源做纺织的用什么网站
  • 如何在阿里巴巴上做网站做网站的公司杭州
  • 高端品牌网站建设案例小程序开发商
  • 网站建设需求报告制作网站教程视频
  • 网站建设审批表trellis wordpress
  • 文字直播网站怎么做的网页设计表单注册代码
  • 邓修明调研成都网站建设什么网站可以接单做设计方案
  • 哈尔滨手机建站模板app开发企业网站建设
  • 常州 网站制作厦门市建设局
  • 中国建设门户网登录入口广州seo公司排行
  • 商务网站开发设计燕郊个人做网站
  • 设计微信网站建设自己怎么建立微网站后台
  • 如何制作课程网站模板单位logo设计
  • 微信高端网站建设成都网站开发公司