1.快速排序

 参考自: https://www.cnblogs.com/yundan/p/4022056.html

namespace 快速排序算法
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入待排序数列以 , 分割");
string _s = Console.ReadLine();
string[] _sArray = _s.Split(",".ToCharArray());
int _nLength = _sArray.Length;
int[] _nArray = new int[_nLength];
for (int i = ; i < _nLength; i++)
{
_nArray[i] = Convert.ToInt32(_sArray[i]);
} var list = _nArray.ToList();
QuickSort(list, , _nLength - ); foreach (var i in list)
{
Console.WriteLine(i.ToString());
}
Console.ReadLine();
} //left为0,right为数组长度减一,即分别为数组中第一个和最后一个数的索引
private static int Division(List<int> list, int left, int right)
{
while (left < right)
{
int num = list[left]; //将首元素作为分割位置
if (num > list[left + ]) //前一位 > 后一位
{
list[left] = list[left + ]; //将两处位置对调
list[left + ] = num;
left++;
}
else
{
int temp = list[right];
list[right] = list[left + ];
list[left + ] = temp;
right--;
}
Console.WriteLine(string.Join(",", list));
}
Console.WriteLine("--------------\n");
return left; //指向的此时枢轴的位置
}
private static void QuickSort(List<int> list, int left, int right)
{
if (left < right)
{
int i = Division(list, left, right);
//对枢轴的左边部分进行排序
QuickSort(list, i + , right);
//对枢轴的右边部分进行排序
QuickSort(list, left, i - );
}
}
}
}

2.二分查找法

namespace 二分查找法
{
class Program
{
// 数组,low=0,high为数组长度减一,key为查找的数字
public static int BinarySearch(int[]arr,int low,int high,int key)
{
int mid = (low + high) / ; //中间数字
if (low > high)
{
return -; //查找不到
}
else
{
if (arr[mid] == key)
{
return mid;
}
else if (arr[mid] > key)
{
return BinarySearch(arr, low, mid - , key);
}
else
{
return BinarySearch(arr, mid + , high, key);
}
}
}
static void Main(string[] args)
{
int[] shuzu = { , , , , ,,,,,,,,,, }; //先排好大小顺序
int high = shuzu.Length - ;
int jieguo = BinarySearch(shuzu, , high, );
Console.WriteLine("查找数字下标:"+jieguo);
Console.WriteLine("数组长度:"+shuzu.Length );
Console.ReadLine();
}
}
}

输出:

3.拉格朗日插值法

namespace 拉格朗日插值法
{
class Program
{
private static int Cha(int[] shuzhu, int key)
{
int left = ; //数组中起始位置下标
int right = shuzhu.Length - ; //数组最后一位下标
int middle = -;//查找不到
while (left <= right)
{
middle = left + (right - left) * (key - shuzhu[left]) / (shuzhu[right] - shuzhu[left]);
if (key == shuzhu[middle])
{
return middle;
}
else if (key > shuzhu[middle])
{
left = middle + ;
}
else
{
right = middle - ;
}
}
return -;
}
static void Main(string[] args)
{
int[] num = { , , , , , , , , , ,,,};
int a = Cha(num, );//查找数组中数值为4的下标
Console.WriteLine(a);
Console.ReadLine();
}
}
}

输出:

C# 快速排序--二分查找法--拉格朗日插值法的更多相关文章

  1. 常用算法1 - 快速排序 & 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

  2. 二分查找法&大O表示法

    二分查找法的输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null Python代码(来源于<算法图解>一书): def binary_search( ...

  3. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

  4. 用c语言编写二分查找法

    二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid ...

  5. java for循环和数组--冒泡排序、二分查找法

    //100以内与7相关的数   for(int a=1;a<=100;a++){    if(a%7==0||a%10==7||a/10==7){     System.out.print(a+ ...

  6. 二分查找法 java

    前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...

  7. 学习练习 java 二分查找法

    package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...

  8. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

  9. 选择、冒泡排序,二分查找法以及一些for循环的灵活运用

    import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...

随机推荐

  1. php后台添加样式写法

    和我们的光头后台讨论了样式的问题,总结一下 <span style="color:#6666cc;font-size: 12px" onclick="addwork ...

  2. 8、Selenium+python安装HTMLTestRunner插件

    1.打开网址:http://tungwaiyip.info/software/HTMLTestRunner.html,下载HTMLTestRunner.py 2.copy其HTMLTestRunner ...

  3. OracleParameter中参数名必须是DB中已有字段:【 ORA-01745: 无效的主机/绑定变量名】

    错误例子: 错误原因:查询的变量是自己随便命名的,不是数据库表中已有的字段, 因此,在进行OracleParameter(":rownum",10)时,在数据库中无法自动进行字段匹 ...

  4. java代码随机数组合,随机号码产生器

    总结:还是掌握方法的运用++++++ package com.c2; //随机数组合,随机号码产生器 //随机号码 import java.util.Random; public class rfe ...

  5. web.xml中classpath表示什么样的路径

    首先  classpath是指 WEB-INF文件夹下的classes目录 解释classes含义: 1.存放各种资源配置文件 eg.init.properties log4j.properties ...

  6. mycat 实践扩容

    实践扩容, travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQL上 1--定义10个分片<table name="travelrecord_t ...

  7. eclipse下搭建Drools规则引擎环境

    插件下载地址:http://download.jboss.org/drools/release/ 1.点开对应的版本文件,选择标红的两个压缩包下载,其他的如有需要也可以自行选择: 2.将下载的压缩包解 ...

  8. 初识python notes

    python数据类型 数字 字符串 列表 元祖 字典 1.为什么要编程 编程的目的是解放人力,这就需要人通过编写程序的方式计算机代替人去自动干活 2.什么是编程语言 编程语言就是人与计算机之间沟通的介 ...

  9. Eclipse与github整合完整版

    最近朋友都推荐使用github管理自己的项目,而且免费用户可以有5个仓库,恰好我也想了解下git,借此机会学习一下. github官方指南使用独立第三方git工具来进行版本控制,并不借助于eclips ...

  10. 问题:asp.net 点击button按钮调到页面顶部;结果:asp.net点击一个按钮,使页面跳转到本面页上的指定位置

    asp.net点击一个按钮,使页面跳转到本面页上的指定位置 (2011-04-19 16:46:51) 转载▼ 标签: it   最近在做一个项目. 用到标题所说的功能. 实现方法: 1.在aspx中 ...