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 ...
随机推荐
- Android 中算法问题
1:冒泡排序: 冒泡排序的思路: 相邻的两个数进行比较 (1):首先需要连个for 循环 (2):最外层for 循环控制最里面 for 循环的循环次数 (3):通过设置中间参数的方式进行交换 (4): ...
- python学习之python开发环境搭建
Python简介 Python是一种面向对象.解释型计算机程序设计语言.Python语法简洁而清晰,具有丰富和强大的类库等等众多的特性,这是来自百度百科的介绍,在百度百科还能看到它的更详细的介绍信息, ...
- J2EE学习(2)--何謂容器【良葛格学习笔记搬】
何謂容器 對於Java程式而言,JVM(Java Virtual Machine)是其作業系統,.java編譯為.class檔案,.class對於JVM而言,就是其可執行檔,你的Java程式基本上只認 ...
- 自建yum源及分组安装
最近在研究一套自动化运维方向的框架,在想到远程安装软件包的时候,觉得有yum支持会更方便一些.主要思路是把程序员写的代码或程序打包成rpm,然后提交到自建yum源,并实现按组安装,本地yum源实现步骤 ...
- 将应用部署到Tomcat根目录的方法 去掉url里的项目名
在"conf/Catalina/localhost"目录下增加新的文件"ROOT.xml"(注意大小写哦),文件内容如下: <?xml version=& ...
- asp.net 各种路径
Request.Path 是包含文件名的,而 Request.ApplicationPath 是应用程序路径,不包含文件名. 示例: Request.Path = /cftea/Default.asp ...
- C++ 取得系统当前时间
#include <time.h> //* 方法一 time_t tt = time(NULL);//这句返回的只是一个时间cuo tm* t= localtime(&tt); p ...
- Java使用poi操作cexel
Java操作excel比较简单,但是时间长了就会忘记,因此基本的简单操作做个记录. 依赖poi的jar包,pom.xml配置如下: <project xmlns="http://mav ...
- Net操作Excel(终极方法NPOI)
NPOI 待学习 http://www.cnblogs.com/stone_w/archive/2012/08/02/2620528.html
- korn shell
"$*" is a single string that consists of all of the positional parameters "$@" ...