zoukankan      html  css  js  c++  java
  • 数据结构排序

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

        }
    后记:
    冒泡是不断的把小的数向前移
    选择是每次取最小的,然后向已经排好的部分最后添加
    插入是把下一个数插入到已经排好的序列中的合适位置
  • 相关阅读:
    css常用属性记录
    js字符串常用方法总结
    mongoose基本操作
    本地存储API
    历史相关API
    自定义播放器
    HTML5全屏操作API
    HTML5自定义属性操作
    HTML5类操作
    案例:3D切割轮播图
  • 原文地址:https://www.cnblogs.com/xh831213/p/1212221.html
Copyright © 2011-2022 走看看