实现泛型数组的冒泡排序算法 C#
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#的更多相关文章
- 数据结构之------C++指针冒泡排序算法
C++通过指针实现一位数组的冒泡排序算法. 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 代码: /* Name:冒泡排序算法 Copyright:Null ...
- Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法
前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本 ...
- C#冒泡排序算法
用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...
- 冒泡排序算法(C#实现)
简单的冒泡排序算法,代码如下: ] = temp; hasExchangeAction =true; //发生过互换 } } if (!hasExchangeAction) //如果没有发生过互换,则 ...
- PHP实现冒泡排序、双向冒泡排序算法
冒泡排序(Bubble Sort),是一种较简单的.稳定的排序算法.冒泡排序算法步骤:比较相邻的元素,如果第一个比第二个大,就交换他们两个的位置:对每对相邻的元素执行同样的操作,这样一趟下来,最后的元 ...
- java:高速排序算法与冒泡排序算法
Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /** * * @Description: * @author:cuiyaon ...
- Java数组的排序算法
在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...
- C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- php中的冒泡排序算法
<?php //php中的冒泡排序算法 //从大到小的排序方式 ,$arr[$j]>$arr[$j+1](这里换成了从小到大的排序方式) $arr=array(); $arr=array( ...
随机推荐
- Elasticsearch 系列3 --- Elasticsearch配置
一. 位置 ES的配置文件位于安装目录\config下面,主要有 (1) elasticsearch.yml ES系统的配置: (2) jvm.options Java虚拟机配置: (3) log4j ...
- WinForm POST上传与后台接收
前端 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using ...
- C# 动态创建数据库三(MySQL)
前面有说明使用EF动态新建数据库与表,数据库使用的是SQL SERVER2008的,在使用MYSQL的时候还是有所不同 一.添加 EntityFramework.dll ,System.Data.En ...
- MariaDB 用户与权限管理(12)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...
- elasticsearch+logstash+redis+kibana 实时分析nginx日志
1. 部署环境 2. 架构拓扑 3. nginx安装 安装在192.168.176.128服务器上 这里安装就简单粗暴了直接yum安装nginx [root@manager ~]# yum -y in ...
- Git for Windows之使用SSH协议开通公钥免密登陆功能
1.删除Https的通信方式,建立SSH的通信方式 (1).查看当前的通信方式 当前是使用Https的方式与远程仓库进行通信 (2).删除HTTPS的通信方式 ok,HTTPS通信方式已删除 (3). ...
- 【从0到1学Web前端】CSS定位问题三(相对定位,绝对定位) 分类: HTML+CSS 2015-05-29 23:01 842人阅读 评论(0) 收藏
引子: 开始的时候我想先要解决一个问题,怎么设置一个div盒子撑满整个屏幕? 看下面的html代码: <body> <div id="father-body"&g ...
- [Java初探07]__关于面向对象的简单认识
前言 类和对象,在我们学习Java语言的过程中,它们无时无刻不存在着,在我们还远未详细弄明白它们的意义之前,在我们不知不觉的下意识里,我们都会直接或间接的用到它们,这是因为Java是一门面向对象的语言 ...
- Hadoop2源码分析-序列化篇
1.概述 上一篇我们了解了MapReduce的相关流程,包含MapReduce V2的重构思路,新的设计架构,与MapReduce V1的区别等内容,今天我们在来学习下在Hadoop V2中的序列化的 ...
- 详解C#泛型(一)
一.C#中的泛型引入了类型参数的概念,类似于C++中的模板,类型参数可以使类型或方法中的一个或多个类型的指定推迟到实例化或调用时,使用泛型可以更大程度的重用代码.保护类型安全性并提高性能:可以创建自定 ...