十种经典的排序算法C#实现(持续更新ing)

来源:互联网 发布:嘉兴微知电子有限公司 编辑:程序博客网 时间:2024/06/05 23:42

参考网络及其他书籍自己敲的,经验证通过

/********选择排序********/

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

namespace selectsort
{
    class Program
    {
        static void Main(string[] args)
        {
            //选择排序
            //定义并初始化要排序的元素数组
            int[] sortnumbers = { 2, 5, 9, 11, 65, 37, 28, 96, 55 };
            int i = 0;
            //for循环,找参考元素
            for (i = 0; i < sortnumbers.Length-1; i++) {
                int min=i;
                //for循环,依次与参考元素比较大小,找出最小的放到最前边
                for (int j = i + 1; j < sortnumbers.Length; j++) {
                    if (sortnumbers[j] < sortnumbers[min])
                        min = j;
                }  
                //交换元素
                int temp = sortnumbers[min];
                sortnumbers[min] = sortnumbers[i];
                sortnumbers[i] = temp;
            }
                
             //for循环输出排好的元素
            for (i = 0; i < sortnumbers.Length; i++) {
                Console.Write( "{0,7}",sortnumbers[i]);
            }
            Console.Read();
           
        }
    }
}





/*****    冒泡排序      ******/
namespace bubblesort1
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义并初始化数组
            int[] sortnumbers = { 2, 5, 53, 92, 44, 30, 11, 105, 73, 88, 25 };
            int i = 0;
            //for循环控制范围
            for (i = 0; i < sortnumbers.Length-1; i++) {
                //for循环进行交换
                for (int j = 0; j < sortnumbers.Length - 1 - i; j++) {
                //判断j+1元素是否大于j元素,是交换位置
                    if (sortnumbers[j + 1] < sortnumbers[j]) {
                        //实际交换元素
                        int temp = sortnumbers[j + 1];
                        sortnumbers[j + 1] = sortnumbers[j];
                        sortnumbers[j] = temp;
                    }
                }
            }

            //for循环输出
            for (i = 0; i < sortnumbers.Length; i++) {
                Console.Write("{0,5}", sortnumbers[i]);
            }
            Console.Read();
        }
    }
}
/***********************************************************************************/
/*******   插入排序*   *********/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace insertsort1
{
    class Program
    {
        static void Main(string[] args)
        {
            //插入排序
            int[] sortnumbers = { 9, 4, 5, 12, 63, 35, 97, 42, 15, 11, 105, 80 };
            int i = 0;
            for (i = 0; i < sortnumbers.Length; i++) {
                int temp = sortnumbers[i];
                int j = i;
                while (j > 0 && sortnumbers[j-1] > temp) {
                    sortnumbers[j] = sortnumbers[j - 1];
                    j--;
                }
                sortnumbers[j] = temp;
            }
            for (i = 0; i < sortnumbers.Length; i++) {
                Console.Write("{0,4}", sortnumbers[i]);
            }
            Console.Read ();
        }
    }
}
/**************************************************************************************/
/*******希尔排序  ********/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace insertsort1
{
    class Program
    {
        static void Main(string[] args)
        {
            //希尔排序
            int[] sortnumbers = { 9, 4, 5, 12, 63, 35, 97, 42, 15, 11, 105, 80 };
            int i = 0, gap = sortnumbers.Length / 2;
            while (gap >0)
            {             
                for (i = gap; i < sortnumbers.Length; i++) {
                int temp = sortnumbers[i];
                int j = i-gap;
                while ( j >= 0 && sortnumbers[j] > temp)
                {
                    sortnumbers[j+gap] = sortnumbers[j];
                    j -= gap;
                }
                sortnumbers[j+gap] = temp;
                
            }
                gap /= 2;
            
            }
            for (i = 0; i < sortnumbers.Length; i++)
            {
                Console.Write("{0,4}", sortnumbers[i]);
            }
            Console.Read();
        }
        
    }
}
/*****************************************************************************************/
/********快速排序 *******/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace quicksort
{
    class Program
    {
        static void Main(string[] args)
        {   
            int[] array = { 5, 4, 2, 89, 36, 6 };
            Sort(array, 0, array.Length - 1);
            for (int i = 0; i < array.Length;i++ )
                Console.WriteLine(array[i]);
            Console.Read();
        }
        public static void Sort(int[] array,int left,int right){
            int i,j,temp;
            if(left>right)
                return ;
            i = left;
            j = right;
            temp = array[left];
            while (i != j) {
                while (array[j] >= temp && i < j)
                    j--;
                while (array[i] <= temp && i < j)
                    i++;
                if (i < j) {
                    int t = array[i];
                    array[i] = array[j];
                    array[j] = t;
                }
                
            }
            array[left] = array[i];
            array[i] = temp;

            Sort(array,left,i-1);
            Sort(array,i+1,right);
        
        }
    }
}
/***********************************************************************/
0 0
原创粉丝点击