• Array数组集合的排序


    /*
                   #########                       
                  ############                     
                  #############                    
                 ##  ###########                   
                ###  ###### #####                  
                ### #######   ####                 
               ###  ########## ####                
              ####  ########### ####               
             ####   ###########  #####             
            #####   ### ########   #####           
           #####   ###   ########   ######         
          ######   ###  ###########   ######       
         ######   #### ##############  ######      
        #######  #####################  ######     
        #######  ######################  ######    
       #######  ###### #################  ######   
       #######  ###### ###### #########   ######   
       #######    ##  ######   ######     ######   
       #######        ######    #####     #####    
        ######        #####     #####     ####     
         #####        ####      #####     ###      
          #####       ###        ###      #        
            ###       ###        ###              
             ##       ###        ###               
    __________#_______####_______####______________
    
        身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。
                    我们的未来没有BUG              
    * ==============================================================================
    * Filename: Array
    * Created:  2017/5/3
    * Author:   ShangHai WangYuChen
    * ==============================================================================
    */
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    
    public class Array : MonoBehaviour {
        List<int> list = new List<int>() { 11,5,9,33,15,32,15};
        /// <summary>
        /// 直接插入排序
        /// </summary>
        /// <param name="list"></param>
        public static void InsertSort(List<int> list) {
            //从第二个数开始循环, 循环n-1次
            for (int i = 1; i < list .Count; i++)
            {
                //将待排序的数拿出来, 以便后面挪位子
                int temp = list[i];
                //j就是最后确定的那个最大/最小数的下标
                int j = i;
                while (j>=1&&temp <list[j-1])
                {
                    //将满足条件的数据向后移动一位, 腾空位, 为插入挪位子
                    list[j] = list[j - 1];
                    j--;
                }
                list[j] = temp;
            }
        }
        /// <summary>
        /// 希尔排序
        /// </summary>
        /// <param name="list"></param>
        public static void ShellSort(List<int> list) {
            int step = list.Count / 2;
            while (step>=1)
            {
                for (int i = step; i < list.Count; i++)
                {
                    int temp = list[i];
                    int j = i;
                    while (j>=step&&temp>list[j-step])
                    {
                        list[j] = list[j - step];
                        j -= step;
                    }
                    list[j] = temp;
                }
                step = step / 2;
            }
        }
        /// <summary>
        /// 直接选择排序
        /// </summary>
        /// <param name="list"></param>
        public static void SelectionSort(List<int> list) {
            for (int i = 0; i < list.Count -1; i++)
            {
                //假设tempIndex的下标的值最小
                int tempIndex = i;
                for (int j = i+1; j < list.Count; j++)
                {
                    //如果tempIndex下标的值大于j下标的值,则记录较小值下标j
                    if (list [tempIndex]>list [j])
                    {
                        tempIndex = j;
                    }
                }
                //最后将假想最小值跟真的最小值进行交换
                int temp = list[tempIndex];
                list[tempIndex] = list[i];
                list[i] = temp;
            }
        }
        /// <summary>
        /// 冒泡排序算法
        /// </summary>
        /// <param name="list"></param>
        public static void BubbleSort(List<int> list) {
            for (int i = 0; i < list.Count -1; i++)
            {
                for (int j = 1; j < list.Count ; j++)
                {
                    //如果前面一个数大于后面一个数则交换
                    if (list [j-1]>list [j])
                    {
                        int temp = list[j - 1];
                        list[j - 1] = list[j];
                        list[j] = temp;
                    }
                }
            }
        }
        /// <summary>
        /// 冒泡排序算法(自己喜欢常用的冒泡排序)
        /// </summary>
        /// <param name="list"></param>
        public static void loveSort(List<int> list)
        {
            for (int i = 0; i < list.Count; i++)
            {
                for (int j = i+1; j < list.Count; j++)
                {
                    //如果前面一个数大于后面一个数则交换
                    if (list[i] > list[j])
                    {
                        int temp = list[i];
                        list[i] = list[j];
                        list[j] = temp;
                    }
                }
            }
        }
    
        void Start () {
            // InsertSort(list);
            //ShellSort(list);
            //SelectionSort(list);
            //BubbleSort(list);
            loveSort(list);
            for (int i = 0; i < list.Count; i++)
            {
                Debug.Log("第"+i+"是:"+list [i]);
            }
        }	
    }
    

      

  • 相关阅读:
    c19---指针和字符串
    c18---数组和指针
    c17---指针
    c16---字符串
    c15--二位数组
    Android -- Properties使用
    四种更新UI的方法
    Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
    Android 性能优化之使用MAT分析内存泄露
    android中PopupMenu的使用
  • 原文地址:https://www.cnblogs.com/mclll520/p/6802430.html
Copyright © 2020-2023  润新知