本文介绍了C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序;
冒泡排序:
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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();
Console.Read();
}
}
}
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();
Console.Read();
}
}
}
选择排序:
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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();
Console.Read();
}
}
}
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();
Console.Read();
}
}
}
插入排序:
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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();
Console.Read();
}
}
}
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();
Console.Read();
}
}
}
希尔排序 :
希尔排序是将组分段,进行插入排序.
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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();
Console.Read();
}
}
}
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();
Console.Read();
}
}
}
来自:http://www.csdn.com/