拉格朗日插值快速排序
Posted tjg33
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拉格朗日插值快速排序相关的知识,希望对你有一定的参考价值。
namespace 拉格朗日插值法 { class Program { private static int Cha(int[] shuzhu, int key) { int left = 0; //数组中起始位置下标 int right = shuzhu.Length - 1; //数组最后一位下标 int middle = -1;//查找不到 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 + 1; } else { right = middle - 1; } } return -1; } static void Main(string[] args) { int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,45,46,48}; int a = Cha(num, 4);//查找数组中数值为4的下标 Console.WriteLine(a); Console.ReadLine(); } } }
快速排序
using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Text; using System.Threading.Tasks; 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 = 0; i < _nLength; i++) { _nArray[i] = Convert.ToInt32(_sArray[i]); } var list = _nArray.ToList(); QuickSort(list, 0, _nLength - 1); foreach (var i in list) { Console.WriteLine(i.ToString()); } while (true) { Thread.Sleep(10000); } } //获取按枢轴值左右分流后枢轴的位置 private static int Division(List<int> list, int left, int right) { while (left < right) { int num = list[left]; //将首元素作为枢轴 if (num > list[left + 1]) { list[left] = list[left + 1]; list[left + 1] = num; left++; } else { int temp = list[right]; list[right] = list[left + 1]; list[left + 1] = temp; right--; } Console.WriteLine(string.Join(",", list)); } Console.WriteLine("-------------- "); 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 + 1, right); //对枢轴的右边部分进行排序 QuickSort(list, left, i - 1); } } } }
二分法
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 二分法查找 { class 二分法 { public static void Main(string[] args) { int[] y = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }; int rr = BinarySearch(y, 0, y.Length - 1, 13); Console.Write(rr); } public static int BinarySearch(int[] arr, int low, int high, int key) { int mid = (low + high) / 2; if (low > high) return -1; else { if (arr[mid] == key) return mid; else if (arr[mid] > key) return BinarySearch(arr, low, mid - 1, key); else return BinarySearch(arr, mid + 1, high, key); } } } }
以上是关于拉格朗日插值快速排序的主要内容,如果未能解决你的问题,请参考以下文章