iCeSnaker - Program rhapsody

谱写程序的狂想曲

导航

C#实现的基本算法

Posted on 2004-08-09 00:40  iCeSnaker  阅读(1812)  评论(2编辑  收藏  举报

冒泡法:

Using directives

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[] 151361055992871234753347 };
            BubbleSorter sh 
= new BubbleSorter();
            sh.Sort(iArrary);
            
for (int m = 0; m < iArrary.Length; m++)
                Console.Write(
"{0}", iArrary[m]);
            Console.WriteLine();
        }

    }

}


选择排序法

Using directives

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[] 1536105592871234753347 };
            SelectionSorter ss 
= new SelectionSorter();
            ss.Sort(iArrary);
            
for (int m = 0; m < iArrary.Length; m++)
                Console.Write(
"{0}", iArrary[m]);
            Console.WriteLine();
        }

    }

}


插入排序法

Using directives

namespace InsertionSorter
{
    
public class InsetionSorter
    
{
        
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[] 113361055982871234753347 };
            InsertionSorter ii 
= new InsertionSorter();
            ii.Sort(iArrary);
            
for (int m = 0; m < iArrary.Length; m++)
                Console.Write(
"{0}", iArrary[m]);
            Console.WriteLine();
        }

    }

}


希尔排序法

Using directives

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[] 151361055992871234753347 };
            ShellSorter sh 
= new ShellSorter();
            sh.Sort(iArrary);
            
for (int m = 0; m < iArrary.Length; m++)
                Console.Write(
"{0}", iArrary[m]);
            Console.WriteLine();
        }

    }

}



果然,数据结构和算法是万变不离其宗之根本~