C# 快速排序--二分查找法--拉格朗日插值法
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. 二分查找法要求数据为一组有序的序列(大到小 ...
- 二分查找法&大O表示法
二分查找法的输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null Python代码(来源于<算法图解>一书): def binary_search( ...
- jvascript 顺序查找和二分查找法
第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...
- 用c语言编写二分查找法
二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid ...
- 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+ ...
- 二分查找法 java
前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...
- 学习练习 java 二分查找法
package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...
- Java-数据结构与算法-二分查找法
1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...
- 选择、冒泡排序,二分查找法以及一些for循环的灵活运用
import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...
随机推荐
- markdown的学习
开始 语法 编辑器 sublime配置 图床 体验 开始 昨天晚上加上今天上午,折腾了算是一天的markdown编辑器. 原因是,为了写博客.在博客园写的东西,想法不到简书里,结果发现有部分乱码,以及 ...
- Dos简单命令
1.cmd命令进入某个目录,具体教程:http://blog.csdn.net/aidenliu/article/details/5390113 (注意的是:切换目录时不能直接cmd D:\Nancy ...
- uboot指令和环境变量
一.uboot指令 1.printenv(pri) - 打印环境变量 2.setenv - 设置环境变量,和saveenv 配合使用 3.saveenv - 保存环境变量 4.run - 执行设置好的 ...
- SQL字符串拼接
不同的数据库,相应的字符串拼接方式不同,通过对比加深一下记忆. 一.MySQL字符串拼接 1.CONCAT函数 语法格式:CONCAT(char c1, char c2, ..., char cn) ...
- Windows 7 下将 Tomcat Java 程序设置为 Windows Service
方法: Windows key + r -> Run dialog cmd -> console cd apache-tomcat-[version]/bin service.bat in ...
- Idea编译器 报@Override错误
据说这是jdk的问题,@Override是JDK5就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现 ...
- Java学习之SpringMVC零配置实践
概述:本实践主要是对SpringMVC的主要功能做了一个大概的体验,将原来的SpringMVC的大量配置改成用SpringBoot进行集成,做到了零XML配置,本次实践分为两个部分,一部分为基本功能实 ...
- web页面导出到Excel乱码解决
引言: 前几天 在做web项目的时候 需要导出页面上的数据 到Excel里面 但有的时候出现乱码(有de时候不出现 很奇怪) 原来的代码是这样的: HttpContext.Current.Respon ...
- Python类(八)-类的起源
首先用type()看一下类和实例化对象的类型 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class Person(obj ...
- myeclipse 10破解
因为笔者的电脑是刚买不久,忘记先给电脑分区,等软年安装差不多了才发现忘记分区,所以就备份了数据,然后分区,结果分区过程中没有异常发生,就没用备用数据,就用分过区的原数据,当时还以为没问题,结果打开my ...