点滴积累,融会贯通

-----喜欢一切有兴趣的东西

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
数据结构基本知识
http://student.zjzk.cn/course_ware/data_structure/web/main.htm
排序实现:
    //选择排序算法
    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 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 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 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[] 151361055992871234753347 };

            
//BubbleSorter sh = new BubbleSorter();
            
//sh.Sort(iArrary);

            
//ShellSorter sh = new ShellSorter();
            
//sh.Sort(iArrary);

            InsertionSorter sh 
= new InsertionSorter();
            sh.Sort(iArrary);

            
//SelectionSorter sh = new SelectionSorter();
            
//sh.Sort(iArrary);

            
for (int m = 0; m < iArrary.Length; m++)
            Console.Write(
"{0} ", iArrary[m]);
            Console.WriteLine();
        }

    }
后记:
冒泡是不断的把小的数向前移
选择是每次取最小的,然后向已经排好的部分最后添加
插入是把下一个数插入到已经排好的序列中的合适位置
posted on 2008-06-02 15:12  小寒  阅读(999)  评论(1编辑  收藏  举报