最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#幾種排序算法

 更新時(shí)間:2007年03月09日 00:00:00   作者:  
作者:Sabine 【導(dǎo)讀】本文介紹了C#的四種排序算法:冒泡排序、選擇排序、插入排序和希爾排序 

 冒泡排序

using System;

namespace BubbleSorter 

{ public class BubbleSorter 

{ public void Sort(int [] list) 

{ int i,j,temp; 

bool done=false; 

j=1; 

while((j<list.Length)&&(!done)) 

{ done=true; 

for(i=0;i<list.Length-j;i++) 



if(list[i]>list[i+1]) 



done=false; 

temp=list[i]; 

list[i]=list[i+1]; 

list[i+1]=temp; 

} } 

j++; } 

} } 

public class MainClass 

{ public static void Main() 



int[] iArrary=new int[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47}; 

BubbleSorter sh=new BubbleSorter(); 

sh.Sort(iArrary); 

for(int m=0;m<iArrary.Length;m++) 

Console.Write("{0} ",iArrary[m]); 

Console.WriteLine(); 

} } 






選擇排序 

using System; 

 

namespace SelectionSorter 

{ public class SelectionSorter 

{ private int min; 

public void Sort(int [] list) 

{ for(int i=0;i<list.Length-1;i++) 

{ min=i; 

for(int j=i+1;j<list.Length;j++) 

{ if(list[j]<list[min]) 

min=j; 



int t=list[min]; 

list[min]=list[i]; 

list[i]=t; 

} } 



public class MainClass 

{ public static void Main() 



int[] iArrary=new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47}; 

SelectionSorter ss=new SelectionSorter(); 

ss.Sort(iArrary); 

for(int m=0;m<iArrary.Length;m++) 

Console.Write("{0} ",iArrary[m]); 

Console.WriteLine(); 

} } 






插入排序 

using System;

namespace InsertionSorter 

{ public class InsertionSorter 

{ public void Sort(int [] list) 

{ for(int i=1;i<list.Length;i++) 

{ int t=list[i]; 

int j=i; 

while((j>0)&&(list[j-1]>t)) 

{ list[j]=list[j-1]; 

--j; 



list[j]=t; } 





public class MainClass 

{ public static void Main() 



int[] iArrary=new int[]{1,13,3,6,10,55,98,2,87,12,34,75,33,47}; 

InsertionSorter ii=new InsertionSorter(); 

ii.Sort(iArrary); 

for(int m=0;m<iArrary.Length;m++) 

Console.Write("{0}",iArrary[m]); 

Console.WriteLine(); 

} } 






希爾排序 

 希爾排序是將組分段,進(jìn)行插入排序. 

using System; 

namespace ShellSorter 



public class ShellSorter 



public void Sort(int [] list) 



int inc; 

for(inc=1;inc<=list.Length/9;inc=3*inc+1); 

for(;inc>0;inc/=3) 



for(int i=inc+1;i<=list.Length;i+=inc) 



int t=list[i-1]; 

int j=i; 

while((j>inc)&&(list[j-inc-1]>t)) 



list[j-1]=list[j-inc-1]; 

j-=inc; 



list[j-1]=t; 

} } 

} } 

public class MainClass 

{ public static void Main() 



int[] iArrary=new int[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47}; 

ShellSorter sh=new ShellSorter(); 

sh.Sort(iArrary); 

for(int m=0;m<iArrary.Length;m++) 

Console.Write("{0} ",iArrary[m]); 

Console.WriteLine(); 

} } 





 


快速排序

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

namespace SoloDataStructure
{
    class MyQuickSort
    {
        /**//// <summary>
        /// 快速排序算法
        /// </summary>
        /// 快速排序?yàn)椴环€(wěn)定排序,時(shí)間復(fù)雜度O(nlog2n),為同數(shù)量級(jí)中最快的排序方法
        /// <param name="arr">劃分的數(shù)組</param>
        /// <param name="low">數(shù)組低端上標(biāo)</param>
        /// <param name="high">數(shù)組高端下標(biāo)</param>
        /// <returns></returns>
        static int Partition(int[] arr, int low, int high)
        {
            //進(jìn)行一趟快速排序,返回中心軸記錄位置
           // arr[0] = arr[low];
            int pivot = arr[low];//把中心軸置于arr[0]
            while (low < high)
            {
                while(low<high && arr[high]>=pivot)
                --high;
            //將比中心軸記錄小的移到低端
            Swap(ref arr[high],ref arr[low]);
                while(low<high && arr[low]<=pivot)
                ++low;
            Swap(ref arr[high],ref arr[low]);
           //將比中心軸記錄大的移到高端
            }
            arr[low] = pivot; //中心軸移到正確位置
            return low;  //返回中心軸位置
        }
        static void Swap(ref int i, ref int j)
        {
            int t;
            t = i;
            i = j;
            j = t;
        } 
        static void QuickSort(int[] arr,int low,int high)
        {
            if (low < high-1)//當(dāng) arr[low,high]為空或只一個(gè)記錄無(wú)需排序
            {
                int pivot = Partition(arr,low,high);
                QuickSort(arr,low,pivot-1);
                QuickSort(arr,pivot+1,high);

            }
        }
        static void Main(string[] args)
        {
            int[] arr=new int[]{54,62,99,14,28,1,8,77,99,3,110};
            QuickSort(arr, 0, arr.Length-1);
            Console.Write("Data After QuickSort:");
            foreach (int i in arr)
            {
                Console.Write(i+",");
            }
            Console.ReadLine();
        }
    }
}

相關(guān)文章

  • C#位移的介紹與例子

    C#位移的介紹與例子

    很多人提問(wèn),不知道C#位移,可能有些人在面試中也遇到過(guò)
    2013-04-04
  • C#關(guān)鍵字Check簡(jiǎn)單介紹

    C#關(guān)鍵字Check簡(jiǎn)單介紹

    這篇文章主要介紹了C#關(guān)鍵字Check功能描述及注意事項(xiàng),checke關(guān)鍵字主要用于對(duì)整型類型算術(shù)運(yùn)算和轉(zhuǎn)換顯式啟用溢出檢查,本文通過(guò)程序演示給大家詳細(xì)介紹,需要的朋友一起看看吧
    2022-04-04
  • 給c#添加SetTimeout和SetInterval函數(shù)

    給c#添加SetTimeout和SetInterval函數(shù)

    Javascript中的SetTimeout和SetInterval函數(shù)很方便,把他們移植到c#中來(lái)。
    2008-03-03
  • C#使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件

    C#使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件

    MiniExcel是一個(gè)簡(jiǎn)單、高效避免OOM的.NET處理Excel查、寫、填充數(shù)據(jù)的工具,這篇文章主要介紹了C#如何使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件,需要的可以參考下
    2024-02-02
  • C#實(shí)現(xiàn)的調(diào)用DOS命令操作類實(shí)例

    C#實(shí)現(xiàn)的調(diào)用DOS命令操作類實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)的調(diào)用DOS命令操作類,實(shí)例分析了C#調(diào)用系統(tǒng)常用DOS命令的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • winform創(chuàng)建不規(guī)則窗體的方法

    winform創(chuàng)建不規(guī)則窗體的方法

    這篇文章主要介紹了winform創(chuàng)建不規(guī)則窗體的方法,涉及C#窗體創(chuàng)建的相關(guān)參數(shù)設(shè)置技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#連接藍(lán)牙設(shè)備的實(shí)現(xiàn)示例

    C#連接藍(lán)牙設(shè)備的實(shí)現(xiàn)示例

    本文主要介紹了C#連接藍(lán)牙設(shè)備的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C#通過(guò)流寫入一行數(shù)據(jù)到文件的方法

    C#通過(guò)流寫入一行數(shù)據(jù)到文件的方法

    這篇文章主要介紹了C#通過(guò)流寫入一行數(shù)據(jù)到文件的方法,涉及C#針對(duì)文本文件讀寫的基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 如何在c#中使用Zlib壓縮與解壓

    如何在c#中使用Zlib壓縮與解壓

    這篇文章主要介紹了如何在c#中使用Zlib壓縮與解壓,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C#多線程傳遞參數(shù)及任務(wù)用法示例

    C#多線程傳遞參數(shù)及任務(wù)用法示例

    這篇文章主要介紹了C#多線程傳遞參數(shù)及任務(wù)用法,結(jié)合簡(jiǎn)單實(shí)例形式分析了C#多線程的使用及相關(guān)的參數(shù)傳遞與任務(wù)創(chuàng)建等使用技巧,需要的朋友可以參考下
    2016-06-06

最新評(píng)論

陆良县| 仙居县| 辽中县| 兰考县| 长岛县| 静海县| 靖边县| 敦化市| 九龙城区| 龙江县| 城固县| 株洲县| 运城市| 德格县| 泰州市| 云阳县| 马边| 九龙坡区| 乌兰浩特市| 科技| 崇明县| 丹棱县| 西宁市| 滦平县| 禹州市| 黄梅县| 玉树县| 黄浦区| 安阳市| 江孜县| 土默特右旗| 安西县| 乌拉特前旗| 新郑市| 祁东县| 大冶市| 鹿邑县| 鱼台县| 松滋市| 乐安县| 桂林市|