C#算法基础之选择排序

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 
  7 namespace ConsolePractice
  8 {
  9     class CArray
 10     {
 11         private int[] arr;
 12         //数组大小
 13         private int upper;
 14         //下标
 15         private int numElements;
 16 
 17         /// <summary>
 18         /// 初始化数组参数
 19         /// </summary>
 20         /// <param name="size"></param>
 21         public CArray(int size)
 22         {
 23             arr = new int[size];
 24             upper = size - 1;
 25             numElements = 0;
 26         }
 27 
 28         /// <summary>
 29         /// 插入方法
 30         /// </summary>
 31         /// <param name="item">存储的数</param>
 32         public void Insert(int item)
 33         {
 34             arr[numElements] = item;
 35             numElements++;
 36         }
 37 
 38         /// <summary>
 39         /// 输出方法
 40         /// </summary>
 41         public void DisplayElements()
 42         {
 43             for (int i = 0; i <= upper; i++)
 44             {
 45                 Console.Write(arr[i] + " ");
 46             }
 47             Console.WriteLine();
 48         }
 49 
 50         /// <summary>
 51         /// 清除数组
 52         /// </summary>
 53         public void Clear()
 54         {
 55             for (int i = 0; i <= upper; i++)
 56             {
 57                 arr[i] = 0;
 58             }
 59             numElements = 0;
 60         }
 61 
 62         /// <summary>
 63         /// 选择排序算法
 64         /// </summary>
 65         public void SelectionSort()
 66         {
 67             int min, temp;
 68             //每一轮都可以确定一个最小值,排到最前面
 69             for (int outer = 0; outer <= upper; outer++)
 70             {
 71                 min = outer;
 72                 //每一次拿自身数值与排在它后面的数组比较大小,若比它小则记录下标,一轮过后调换数值。
 73                 for (int inner = outer + 1; inner <= upper; inner++)
 74                 {
 75                     if (arr[inner] < arr[min]) min = inner;
 76                 }
 77                 temp = arr[outer];
 78                 arr[outer] = arr[min];
 79                 arr[min] = temp;
 80                 this.DisplayElements();
 81             }
 82         }
 83     }
 84 
 85     class C_shape
 86     {
 87         static void Main()
 88         {
 89             CArray nums = new CArray(10);
 90             Random rnd = new Random(100);
 91             for (int i = 0; i < 10; i++)
 92             {
 93                 nums.Insert(rnd.Next(0, 100));
 94             }
 95             Console.WriteLine("Before sorting:");
 96             nums.DisplayElements();
 97             Console.WriteLine("During sorting:");
 98             nums.SelectionSort();
 99             Console.WriteLine("After sorting:");
100             nums.DisplayElements();
101             Console.ReadKey();
102         }
103     }
104 }

运行结果:

posted @ 2013-11-28 17:03  漂移青春  阅读(198)  评论(0编辑  收藏  举报