递归/冒泡排序/二分查找
递归
/// <summary> /// 递归 1+2+3+4+5 /// </summary> /// <param name="arr"></param> /// <param name="value"></param> /// <returns></returns> [Description("//https://www.cnblogs.com/lfxiao/p/6742477.html")] public static int GetRecursion(int Index) { while (true) { if (Index == 1) { return 1; } return Index + GetRecursion(Index - 1); } } /// <summary> /// 递归 1+1+2+3+4+5 /// </summary> /// <param name="Index"></param> /// <returns></returns> public static int GetRecursion2(int Index) { //while (true) { if (Index == 1) { return 1; } else if (Index <= 0) { return 0; } else if (Index == 2) { return 2; } return Index + GetRecursion2(Index - 1); } }
int value = GetRecursion(4); int value2 = GetRecursion2(5); Console.WriteLine(value);
冒泡排序
/// <summary> /// 冒泡排序 从大到小 /// </summary> /// <param name="data"></param> public void BubbleSort(double[] data) { for (int i = 0; i < data.Length - 1; i++) { for (int j = data.Length - 1; j > i; j--) { if (data[j] > data[j - 1]) { data[j] = data[j] + data[j - 1]; data[j - 1] = data[j] - data[j - 1]; data[j] = data[j] - data[j - 1]; } } } } /// <summary> /// 冒泡排序 从小到大 /// </summary> /// <param name="data"></param> /// <returns></returns> public static void GetBubbleSort(double[] data) { for (int i = 0; i < data.Length - 1; i++) { for (int j = 0; j < data.Length - 1 - i; j++) { if (data[j] > data[j + 1]) { data[j] = data[j] + data[j + 1]; data[j + 1] = data[j] - data[j + 1]; data[j] = data[j] - data[j + 1]; } } } } /// <summary> /// 效率低 /// </summary> /// <param name="list"></param> public void PopSort(int[] list) { int i, j, temp; //先定义一下要用的变量 for (i = 0; i < list.Length - 1; i++) { for (j = i + 1; j < list.Length; j++) { if (list[i] > list[j]) //如果第二个小于第一个数 { //交换两个数的位置,在这里你也可以单独写一个交换方法,在此调用就行了 temp = list[i]; //把大的数放在一个临时存储位置 list[i] = list[j]; //然后把小的数赋给前一个,保证每趟排序前面的最小 list[j] = temp; //然后把临时位置的那个大数赋给后一个 } } } }
double[] data = new double[5] { 3.1,2.1,4.1,5.1,3.5}; BubbleSort(data);
二分查找
/// <summary> /// 二分法查找 /// </summary> /// <param name="arr"></param> /// <param name="key">要查找的对象</param> public static int GetBinarySearch(int[] arr, int value) { int low = 0; int high = arr.Length - 1; while (low <= high) { int middle = (low + high) / 2; if (value == arr[middle]) { return middle;//如果找到了就直接返回这个元素的索引 } else if (value > arr[middle]) { low = middle + 1; } else { high = middle - 1; } } return -1;//如果找不到就返回-1; }
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int value = GetBinarySearch(arr, 4); Console.WriteLine(arr[value]);
【2019】递归/冒泡排序/二分查找
最新推荐文章于 2024-09-14 10:04:15 发布
