排序算法:

    class Sort
{
static void swap<T>(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
} #region 冒泡排序
public static void Bubble(ref int[] arr)
{
for (int i = ; i < arr.Length - ; i++)
for (int j = i + ; j < arr.Length; j++)
if (arr[i] > arr[j])
swap(ref arr[i], ref arr[j]);
}
//其它数据类型同上
public static void Bubble(ref string[] arr)
{
for (int i = ; i < arr.Length - ; i++)
for (int j = i + ; j < arr.Length; j++)
if (arr[i].CompareTo(arr[j]) > )
swap(ref arr[i], ref arr[j]);
}
#endregion #region 选择排序
public static void Select(ref int[] arr)
{
for (int i = ; i < arr.Length; i++)
{
int min = i;
for (int j = i + ; j < arr.Length; j++)
if (arr[j] < arr[min])
min = j;
swap(ref arr[i], ref arr[min]);
}
}
//其它数据类型同上
#endregion #region 插入排序
public static void Insert(ref int[] arr)
{
for (int i = ; i < arr.Length; i++)
{
int tmp = arr[i];
int j = i;
while (j > && arr[j - ] >= tmp)
{
arr[j] = arr[j - ];
j--;
}
arr[j] = tmp;
}
}
//其它数据类型同上
#endregion
}

查找算法

    class Search
{
static void swap<T>(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
} #region 顺序查找
public static int SeqIndex(int[] arr, int val)
{
for (int i = ; i < arr.Length; i++)
if (arr[i] == val)
return i;
return -;
}
public static int FindMin(int[] arr)
{
int min = arr[];
for (int i = ; i < arr.Length; i++)
if (arr[i] < min)
min = arr[i];
return min;
}
public static int FindMax(int[] arr)
{
int max = arr[];
for (int i = ; i < arr.Length; i++)
if (arr[i] > max)
max = arr[i];
return max;
} //自组织数据加快顺序查找速度,二八原则,常用的前移
public static int CustSeqIndex(ref int[] arr, int val)
{
for (int i = ; i < arr.Length; i++)
if (arr[i] == val)
{
if (i > arr.Length * 0.2)
{
swap(ref arr[i], ref arr[i - ]);
return i - ;
}
else return i;
}
return -;
}
#endregion #region 二叉查找 须对有序数组
public static int BinaryFind(int[] arr, int val)
{
int min = , max = arr.Length - ;
while (min <= max)
{
int mid = (min + max) / ;
if (arr[mid] < val)
min = mid + ;
else if (arr[mid] > val)
max = mid - ;
else return mid;
}
return -;
}
//用递归法重写上述功能,效率没上面循环方法高
public static int RBinaryFind(int[] arr, int val, int min, int max)
{
if (min > max)
return -;
else
{
int mid = (min + max) / ;
if (arr[mid] == val)
return mid;
else
{
if (arr[mid] < val)
min = mid + ;
else max = mid - ;
return RBinaryFind(arr, val, min, max);
}
}
}
#endregion
}

C# 基础排序与查找算法的更多相关文章

  1. java基础---数组的查找算法(2)

    一.查找的基本概念 查找分为有序查找和无序查找,这里均以数组为对象,有序查找指的是数组元素有序排列,无序查找指的是数组元素有序或无序排列 平均查找长度(Average Search Length,AS ...

  2. python基础一 ------排序和查找算法

    插入排序; 假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素    放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面   ...

  3. 面试常问的几个排序和查找算法,PHP实现

    冒泡,快排,二分查找,都是面试常问的几个算法题目,虽然简单,但是一段时间不用的话就很容易忘记,这里我用PHP实现了一下,温故而知新. 排序 冒泡排序 每一次冒出一个最大的值 function bubb ...

  4. [PHP] 排序和查找算法

    知乎:冒泡排序(bubble sort)的原理是什么? 潘屹峰: 冒泡排序的原理可以顾名思义:把每个数据看成一个气泡,按初始顺序自底向上依次对两两气泡进行比较,对上重下轻的气泡交换顺序(这里用气泡轻. ...

  5. C#常用排序和查找算法

    1.C#堆排序代码 private static void Adjust (int[] list, int i, int m) { int Temp = list[i]; int j = i * 2 ...

  6. python 排序和查找算法

    一.搜索 1.顺序查找 数据存储在具有线性或顺序关系的结构中时,可顺序访问查找 def sequential_search(ilist, item): pos = 0 while pos < l ...

  7. javascript排序 查找算法大全

    在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍.为了加深印象,特意把里面的常用的排序.查找算法用js写了一遍 具体的实例在我的github上,大家可以访问的: http ...

  8. Java面试宝典系列之基础排序算法

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  9. PHP数组基本排序算法和查找算法

    关于PHP中的基础算法,小结一下,也算是本博客的第一篇文章1.2种排序算法冒泡排序:例子:个人见解 5 6 2 3 7 9 第一趟 5 6 2 3 7 9 5 2 6 3 7 9 5 2 3 6 7 ...

随机推荐

  1. Cocos2d-x 3.x 错误 cocos2dxDownloader 编译报错

    因为自带的库不是自己写的代码,所以报错的当时就傻了 报错文件为Cocos2dxDownloader.java 错误铺满全屏,仔细查看发现是类的调用有问题,翻到最上边发现是有几个(很多个)类没有定义,我 ...

  2. C#中String转int问题

    String转int主要有四种方法 1. int.Parse()是一种类容转换:表示将数字内容的字符串转为int类型. 如果字符串为空,则抛出ArgumentNullException异常: 如果字符 ...

  3. 视图(View) – ASP.NET MVC 4 系列

           精心编写的整洁代码是开发一个可维护 Web 应用程序的基础.但用户在浏览器中访问时,这些工作他们是看不见的.用户对应用程序的第一印象,以及与应用程序的整个交互过程都是从视图开始的.    ...

  4. RestEasy 3.x 系列之三:jsonp

    跨域请求解决方法(JSONP, CORS)提到解决跨域可以使用jsonp,RestEasy自带jsonp的拦截器 一.RestEasy的文档如下: If you're using Jackson, R ...

  5. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  6. Nginx泛解析的匹配域名绑定到子目录配置

    网站的目录结构为: # tree /home/wwwroot/linuxeye.com /home/wwwroot/linuxeye.com ├── bbs │   └── index.html └─ ...

  7. asp.net动态设置标题title 关键字keywords 描述descrtptions

    推荐的简单做法如下: protected void Page_Load(object sender, EventArgs e){//Page titlePage.Title = "This ...

  8. Redis执行Lua脚本的情况

    第一个测试: 往Redis里面存入1000个Hash,每个Hash里面有100个元素(Key 0-99,值是Key^2). PHP代码,执行33s左右 <?php $redis = new Re ...

  9. 无法打开登录所请求的数据库 "xxx"登录失败用户 'NT AUTHORITY\NETWORK SERVICE'

    解决:添加用户,选择NT AUTHORITY\SYSTEM登录名,选择当前数据库的架构. 勾选架构 勾选成员身份.如果不勾选,也会报异常:拒绝了对对象 'FW_ORG' (数据库 'ZW_DWSJ', ...

  10. Dual Number

    http://ncatlab.org/nlab/show/dual+number http://mathworld.wolfram.com/DualNumber.html https://en.wik ...