码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法

时间:2018-06-06 18:20:36      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:ati   console   快速排序   lin   foreach   sum   highlight   OLE   插入   

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sort
{
    class Program
    {
        /// <summary>
        /// 排序算法
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            int[] arr = { 0, 5, 7, 6, 2, 9 };
             bubbleSort(arr);
            //quickSort(arr);
            //insertSort(arr);
            foreach (var a in arr)
            {
                Console.Write(a + ",");
            }
            Console.ReadKey();
        }

        /// <summary>
        /// 冒泡排序:比较两个相邻元素的大小
        /// </summary>
        /// <param name="arr"></param>
        public static void bubbleSort(int[] arr)
        {

            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 1; j < arr.Length - i - 1; j++)
                {
                    if (arr[j] < arr[j - 1])
                    {
                        arr[j] = arr[j] + arr[j - 1];
                        arr[j - 1] = arr[j] - arr[j - 1];
                        arr[j] = arr[j] - arr[j - 1];
                    }
                }
            }
        }

        /// <summary>
        /// 快速排序(选择排序):每趟选一个min值
        /// </summary>
        /// <param name="arr"></param>
        public static void quickSort(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                int min = i;
                for (int j = i + 1; j < arr.Length; j++)    //每趟都选出一个最小值,所以到i之前的都已经排好序
                {
                    if (arr[min] > arr[j])
                    {
                        min = j;    //内层循环只需要拿到最小值的下标
                    }
                }
                if (arr[i] != arr[min])
                {
                    arr[i] = arr[i] + arr[min];
                    arr[min] = arr[i] - arr[min];
                    arr[i]= arr[i] - arr[min];
                }
            }
        }

        /// <summary>
        /// 直接插入排序:每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
        /// </summary>
        /// <param name="arr"></param>
        public static void insertSort(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i; j >0; j--)
                {
                    if (arr[j] < arr[j - 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j - 1];
                        arr[j - 1] = temp;
                    }
                }
            }
        }
    }
}

  

排序算法

标签:ati   console   快速排序   lin   foreach   sum   highlight   OLE   插入   

原文地址:https://www.cnblogs.com/hehe625/p/9146090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!