• 数据结构排序


    数据结构基本知识
    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();
            }

        }
    后记:
    冒泡是不断的把小的数向前移
    选择是每次取最小的,然后向已经排好的部分最后添加
    插入是把下一个数插入到已经排好的序列中的合适位置
  • 相关阅读:
    监控系统如何选择合适的时序数据库?
    面试官:谈谈如何防止消息丢失和消息重复
    面试官:mysql的四种事务隔离级别
    一致性Hash介绍及使用场景
    微服务之服务监控
    什么是公考、联考、国考、省考、选调生?
    LINQ: When to use SingleOrDefault vs. FirstOrDefault() with filtering criteria
    Async. Postbacks cause Page_Init? (C#)
    在线求解 不定积分 高等数学
    wpf Load
  • 原文地址:https://www.cnblogs.com/xh831213/p/1212221.html
Copyright © 2020-2023  润新知