zoukankan      html  css  js  c++  java
  • 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 }

    运行结果:

  • 相关阅读:
    使用代理加快SDK Manager的下载速度
    ADT-Bundle运行的错误的排错
    转:Android开发之JNI入门-NDK从入门到精通
    Android NDK的总总误解
    mysql 数据库 一些常用语句 查内存 索引内存
    递归方法 练习编写
    ES 搜索概述
    PHP 数字类型 加 减 乘 除运算 bc函数
    php 控制反转 和 依赖注入
    Thinkphp 3 和 Thinkphp5 区别
  • 原文地址:https://www.cnblogs.com/zt102545/p/3448074.html
Copyright © 2011-2022 走看看