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]);
        }
    }
}

  

时间: 2024-11-20 19:24:20

Array数组集合的排序的相关文章

LeetCode 1122. Relative Sort Array (数组的相对排序)

题目标签:Sort 先设立一个 size 1000 的 array cnt [], 把arr1 里面的数字 计数存入 cnt: 遍历 arr2, 按照arr2 的顺序把 arr1 与 arr2 重复的数字 先存入 arr1: 遍历 cnt,把 cnt 里面剩余的 arr1 剩下的数字 存入arr1: 具体看code.  Java Solution: Runtime:  0 ms, faster than 100.00 % Memory Usage: 38 MB, less than 100.00

Java-杂项:Java数组Array和集合List、Set、Map

之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊,直到看到了这篇文章,讲解的很清楚. 世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 有人想有可以自动扩展的数组,所以有了List 有的人想有没有重复的数组,所以有了set 有人想有自动排序的组数,所以有了TreeSet,TreeList,Tree** 而几乎有有的集合都是基于数组来实现的. 因为集合是对数组做的封装,所以,数组永远比任何一个集合要快 但任何一个集合,比数组提供的功能

leetcode 题解:Remove Duplicates from Sorted Array II(已排序数组去三次及以上重复元素)

题目: Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2,3]. 说明: 1)设个标志可实现 实现: 1 class Solution { 2 public

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

Java Script基础(八) Array数组对象

Java Script基础(八) Array数组对象 一.Array数组 JavaScript中的数组也是具有相同数据类型的一个或者多个值得集合.用法和Java中的数组类似. Array对象的常用属性和方法: 属性: length:获取数组的长度: 方法: join():把数组中的所有元素放入一个字符串中,通过分隔符进行分隔. sort():对数组元素进行排序. 1.创建数组 语法: var a1 = new Array();           //创建一个数组,长度为0: var a2 = 

【JavaSE】day05_List集合_List排序_队列和栈

1.List集合 1)有序集,可重复集.List的特点是可以像数组一样,根据下标操作元素.所以List提供了一些独有的方法. 2)常用实现类: --ArrayList:内部由数组实现,查询快. --LinkedList:内部由链表实现,增删快. 3)E get(int index) 获取指定下标对应的元素.(下标从0开始) 4)E set(int index,E e) 将给定的元素设置到指定的位置上,返回值为原位置上的元素.所以该操作是替换元素操作. 注:需在现有的元素上进行操作. 代码演示:

php数组的各种排序

转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/11/2207494.html 如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作. 经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用.PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行

Array 数组对象

Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的. 注意: 数组的下标用方括号括起来,从0开始. length 用法:<数组对象>.length:返回:数组的长度,即数组里有多少个元素.它等于数组里最后一个元素的下标加一. 数组方法: 指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.

PHP-Manual的学习----【语言参考】----【类型】-----【array数组】

1.Array 数组  PHP 中的 数组 实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性.由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的. 解释这些结构超出了本手册的范围,但对于每种结构至少会提供一个例子.要得到这些结构的更多信息,建议参考有关此广阔主题的其它著作. 2.语法:定义数组 array()  可以用 ar