冒泡,选择,顺序查找算法

    xiaoxiao2021-03-25  46

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LianXi { class Program { static void Main(string[] args) { int[] Array = new int[12]; Random r = new Random(); for (int i = 0; i < Array.Length; i++) { Array[i] = r.Next(0, 11); Console.Write(" " + Array[i]); } Console.Write('\n'); // BubbleSort(Array);//冒泡调用 // SelectSort(Array);//选择调用 // Console.WriteLine( SequntialSearch(Array,5));//顺序查找 for (int i = 0; i < Array.Length; i++) { Console.Write(" " + Array[i]); } Console.Write('\n'); Console.ReadKey(); } /* * 选择和冒泡遍历的次数都是n-1,说明交换的次数都是差不多的 * 但是从代码来看,选择的交换次数比冒泡的次数少,也就是说在 * 一定的程度上选择的效率高于冒泡 */ public static void SelectSort(int[] Array) { int temp; int min; for (int i = 0; i < Array.Length - 1; i++) /出n-1个最小值 { min = i;//使用min来记录最小值的索引 for (int j = i + 1; j < Array.Length - 1; j++) { if (Array[j] < Array[min]) min = j; //得到min最小值的索引 } temp = Array[i]; Array[i] = Array[min]; Array[min] = temp; //使用交换原理,交换两个数, //将当前最小值放在当前序列的最前端,即第i个元素的位置 } } public static int SequntialSearch(int[] Array,int key) { int i=0; for ( i = 0; i < Array.Length; i++) { if (Array[i] == key) break; } if (i >= Array.Length) return -1; else return i; } public static void BubbleSort(int[] Array) { int temp; for (int i = 0; i < Array.Length; i++) /出n-1个最大值 { for (int j = 0; j < Array.Length - 1 - i; j++) /* * 要在n个数中排序,也就将问题转换为在剩下的序列中找到最大值 * 将找到的最大值并放在该序列的最后(n-k),k表示 * 已经找出的最大值数k==(i+1)Array.Length=n; */ { if (Array[j] >= Array[j + 1]) /*如果两个数比较,那么大的数一定是在右边的,那么 * 就有了比较的条件Array[j] >= Array[j+1] */ { temp = Array[j + 1]; Array[j + 1] = Array[j]; Array[j] = temp; } //交换两个数的值的 } } } } }
    转载请注明原文地址: https://ju.6miu.com/read-32385.html

    最新回复(0)