public static class BubbleSortTool
{
public static void BubbleSort<T>(this T[] array, AscendingorDescending ascendingorDescending) where T:IComparable
{
switch (ascendingorDescending)
{
case AscendingorDescending.ascending:
{
while (!SortCompleteChecK(array, AscendingorDescending.ascending))
{
for (int i = ; i < (array.Length - ); i++)
{
if (array[i].CompareTo(array[i + ]) > )
{
T temp = array[i];
array[i] = array[i + ];
array[i + ] = temp;
}
}
}
}
break;
case AscendingorDescending.descending:
{
while (!SortCompleteChecK(array, AscendingorDescending.ascending))
{
for (int i = ; i < (array.Length - ); i++)
{
if (array[i].CompareTo(array[i + ]) < )
{
T temp = array[i];
array[i] = array[i + ];
array[i + ] = temp;
}
}
}
}
break;
default:
break;
}
} private static bool SortCompleteChecK<T>(T[] array, AscendingorDescending ascendingorDescending) where T : IComparable
{
switch (ascendingorDescending)
{
case AscendingorDescending.ascending:
{
for (int i = ; i < (array.Length-); i++)
{
if (array[i].CompareTo(array[i + ]) > )
{
return false;
}
}
return true;
}
break;
case AscendingorDescending.descending:
{
for (int i = ; i < (array.Length - ); i++)
{
if (array[i].CompareTo(array[i + ]) < )
{
return false;
}
}
return true;
}
break;
default:
{ throw new Exception(); }
break;
} } public enum AscendingorDescending
{
ascending,descending
} public static void Print<T>(this T[] array)
{
StringBuilder sb = new StringBuilder();
for (int i = ; i < array.Length; i++)
{
sb.Append(array[i]);
sb.Append(" ");
}
Console.WriteLine(sb);
}
public static void Print<T>(this T[] array,String prompt)
{
StringBuilder sb = new StringBuilder();
sb.Append(prompt);
for (int i = ; i < array.Length; i++)
{
sb.Append(array[i]);
sb.Append(" ");
}
Console.WriteLine(sb);
}
}

实现泛型数组的冒泡排序算法 C#的更多相关文章

  1. 数据结构之------C++指针冒泡排序算法

    C++通过指针实现一位数组的冒泡排序算法. 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 代码: /* Name:冒泡排序算法 Copyright:Null ...

  2. Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

    前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本 ...

  3. C#冒泡排序算法

    用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...

  4. 冒泡排序算法(C#实现)

    简单的冒泡排序算法,代码如下: ] = temp; hasExchangeAction =true; //发生过互换 } } if (!hasExchangeAction) //如果没有发生过互换,则 ...

  5. PHP实现冒泡排序、双向冒泡排序算法

    冒泡排序(Bubble Sort),是一种较简单的.稳定的排序算法.冒泡排序算法步骤:比较相邻的元素,如果第一个比第二个大,就交换他们两个的位置:对每对相邻的元素执行同样的操作,这样一趟下来,最后的元 ...

  6. java:高速排序算法与冒泡排序算法

     Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /**   *  * @Description:  * @author:cuiyaon ...

  7. Java数组的排序算法

    在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...

  8. C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  9. php中的冒泡排序算法

    <?php //php中的冒泡排序算法 //从大到小的排序方式 ,$arr[$j]>$arr[$j+1](这里换成了从小到大的排序方式) $arr=array(); $arr=array( ...

随机推荐

  1. 简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析

    简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析 虽然经常用 OAuth 2.0,但是原理却不曾了解,印象里觉得很简单,请求跳来跳去,今天看完相关介绍,就来捋一捋 ...

  2. Winform文件上传

    近期在做了一个winform的项目的附件上传的需求 最初项目选型的时候有三种 1.使用webservice.webapi上传文件 2,直接保存在数据库中 3.使用共享目录+dos命令 第一种有文件大小 ...

  3. AEAI Portal 权限体系说明

    1.概述 在数通畅联的产品体系中,AEAI Portal毫无疑问的占据了很重要的地位,在这里我们将通过参考Portal样例,讲述一下AEAI Portal权限体系的控制方法.在Portal使用过程中, ...

  4. 【mock】后端不来过夜半,闲敲mock落灯花 (mockjs+Vuex+Vue实战)

      mock的由来[假]   赵师秀:南宋时期的一位前端工程师 诗词背景:在一个梅雨纷纷的夜晚,正处于项目编码阶段,书童却带来消息:写后端的李秀才在几个时辰前就赶往临安度假去了,!此时手头仅有一个简单 ...

  5. 2019/4/23 todolist

    近期的任务单子大概是这样吧 bjoi2019改完,写题解 hnoi2019改一些,写题解 找3道网络流写写 写一场agc,写题解 找2道简单计算几何写写

  6. Java 基础笔记

    1. 面向对象三大特性:封装,继承,多态,java面向对象的最终父类是:Object 2. getInstance() 单实例设计模式factory() 工厂模式build() 建造者模式 3. 静态 ...

  7. 本地主机不安装oracle客户端--访问远程oracle数据库

    在不安装oracle客户端情况下用sqlplus连接数据库: 1.去官网下载 http://www.oracle.com/technetwork/topics/winx64soft-089540.ht ...

  8. python 相关模块安装 国内镜像地址

    python 相关模块安装 国内镜像地址 pipy国内镜像目前有: http://pypi.douban.com/  豆瓣 http://pypi.hustunique.com/  华中理工大学 ht ...

  9. Django F()表达式

    Django F()表达式 一个F()对象代表一个模型字段的值或注释列.使用它可以直接引用模型字段的值并执行数据库操作而不用把它们导入到python的内存中. 相反,Django使用F()对象生成一个 ...

  10. 再谈C#委托与事件

    之前写过一篇关于C#委托与事件的文章(见<C#委托和事件例析>),不过还是收到一些网友的提问.所以,今天再换另一个角度来详解一下这个问题. 一.在控制台下使用委托和事件 我们都知道,C#中 ...