C# 基础排序与查找算法
排序算法:
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# 基础排序与查找算法的更多相关文章
- java基础---数组的查找算法(2)
一.查找的基本概念 查找分为有序查找和无序查找,这里均以数组为对象,有序查找指的是数组元素有序排列,无序查找指的是数组元素有序或无序排列 平均查找长度(Average Search Length,AS ...
- python基础一 ------排序和查找算法
插入排序; 假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素 放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面 ...
- 面试常问的几个排序和查找算法,PHP实现
冒泡,快排,二分查找,都是面试常问的几个算法题目,虽然简单,但是一段时间不用的话就很容易忘记,这里我用PHP实现了一下,温故而知新. 排序 冒泡排序 每一次冒出一个最大的值 function bubb ...
- [PHP] 排序和查找算法
知乎:冒泡排序(bubble sort)的原理是什么? 潘屹峰: 冒泡排序的原理可以顾名思义:把每个数据看成一个气泡,按初始顺序自底向上依次对两两气泡进行比较,对上重下轻的气泡交换顺序(这里用气泡轻. ...
- C#常用排序和查找算法
1.C#堆排序代码 private static void Adjust (int[] list, int i, int m) { int Temp = list[i]; int j = i * 2 ...
- python 排序和查找算法
一.搜索 1.顺序查找 数据存储在具有线性或顺序关系的结构中时,可顺序访问查找 def sequential_search(ilist, item): pos = 0 while pos < l ...
- javascript排序 查找算法大全
在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍.为了加深印象,特意把里面的常用的排序.查找算法用js写了一遍 具体的实例在我的github上,大家可以访问的: http ...
- Java面试宝典系列之基础排序算法
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
- 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 ...
随机推荐
- Cocos2d-x 3.x 错误 cocos2dxDownloader 编译报错
因为自带的库不是自己写的代码,所以报错的当时就傻了 报错文件为Cocos2dxDownloader.java 错误铺满全屏,仔细查看发现是类的调用有问题,翻到最上边发现是有几个(很多个)类没有定义,我 ...
- C#中String转int问题
String转int主要有四种方法 1. int.Parse()是一种类容转换:表示将数字内容的字符串转为int类型. 如果字符串为空,则抛出ArgumentNullException异常: 如果字符 ...
- 视图(View) – ASP.NET MVC 4 系列
精心编写的整洁代码是开发一个可维护 Web 应用程序的基础.但用户在浏览器中访问时,这些工作他们是看不见的.用户对应用程序的第一印象,以及与应用程序的整个交互过程都是从视图开始的. ...
- RestEasy 3.x 系列之三:jsonp
跨域请求解决方法(JSONP, CORS)提到解决跨域可以使用jsonp,RestEasy自带jsonp的拦截器 一.RestEasy的文档如下: If you're using Jackson, R ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- Nginx泛解析的匹配域名绑定到子目录配置
网站的目录结构为: # tree /home/wwwroot/linuxeye.com /home/wwwroot/linuxeye.com ├── bbs │ └── index.html └─ ...
- asp.net动态设置标题title 关键字keywords 描述descrtptions
推荐的简单做法如下: protected void Page_Load(object sender, EventArgs e){//Page titlePage.Title = "This ...
- Redis执行Lua脚本的情况
第一个测试: 往Redis里面存入1000个Hash,每个Hash里面有100个元素(Key 0-99,值是Key^2). PHP代码,执行33s左右 <?php $redis = new Re ...
- 无法打开登录所请求的数据库 "xxx"登录失败用户 'NT AUTHORITY\NETWORK SERVICE'
解决:添加用户,选择NT AUTHORITY\SYSTEM登录名,选择当前数据库的架构. 勾选架构 勾选成员身份.如果不勾选,也会报异常:拒绝了对对象 'FW_ORG' (数据库 'ZW_DWSJ', ...
- Dual Number
http://ncatlab.org/nlab/show/dual+number http://mathworld.wolfram.com/DualNumber.html https://en.wik ...