插入排序法的java代码
- 格式:docx
- 大小:10.91 KB
- 文档页数:1
java稳定的排序方法
Java是一种广泛使用的编程语言,其中排序是常见的操作。
在排序中,稳定性是一个重要的概念。
稳定的排序算法可以保留相等元素的原始顺序,而不稳定的排序算法不保证这一点。
下面介绍几种Java中稳定的排序方法:
1. 冒泡排序:该算法的基本思想是通过交换相邻的元素来将较大的元素逐步“冒泡”到数组的末尾。
冒泡排序是一种简单但效率较低的排序算法,时间复杂度为O(n^2)。
2. 插入排序:该算法的基本思想是将数组分为有序和无序两部分,从无序部分依次取出一个元素插入到有序部分的适当位置。
插入排序的时间复杂度也是O(n^2),但在实际应用中,它比冒泡排序更常用。
3. 归并排序:该算法的基本思想是将待排序数组分成两个子数组,并将每个子数组递归地进行排序,然后再将它们合并成一个有序数组。
归并排序的时间复杂度为O(nlogn),但它需要额外的空间来存储子数组。
4. 堆排序:该算法的基本思想是将待排序数组构建为一个最大堆(或最小堆),然后不断取出堆顶元素并重新调整堆,直到所有元素都被取出。
堆排序的时间复杂度为O(nlogn),但也需要额外的空间来存储堆。
总的来说,以上排序方法都是稳定的。
在实际应用中,我们需要根据数据规模、数据类型和性能需求等因素来选择适当的排序算法。
直接插入的主要代码以下是使用Python代码进行直接插入排序的示例:```def insertion_sort(arr):n = len(arr)for i in range(1, n):key = arr[i]j = i - 1while j >= 0 and key < arr[j]:arr[j+1] = arr[j]j -= 1arr[j+1] = key```这个函数接受一个整数数组作为参数并对其进行排序。
它使用一个循环来遍历数组并依次将每个元素插入到已排序的子数组中。
在每个迭代中,它将一个元素从未排序的部分中取出,将其与已排序的子数组中的元素逐个进行比较,并将其插入到已排序的部分的正确位置。
最终,整个数组将被排序。
以下是使用Java代码进行直接插入排序的示例:```public static void insertionSort(int[] arr) {int n = arr.length;for (int i = 1; i < n; i++) {int key = arr[i];int j = i - 1;while (j >= 0 && key < arr[j]) {arr[j+1] = arr[j];j--;}arr[j+1] = key;}}```跟Python例子相似,这个函数使用一个嵌套的循环来遍历数组并插入最小的元素到逐渐扩大的已排序的子数组中。
它在每次迭代中将一个元素从未排序的部分取出,将其与已排序的子数组中的元素逐个进行比较,并将其插入到已排序的部分的正确位置。
最终,整个数组将被排序。
Java顺序表的基本操作代码一、什么是顺序表顺序表(Sequential List)是一种常见的线性数据结构,它由一组按照顺序存储的元素组成,其中每个元素都有唯一的索引值。
顺序表中的元素在物理存储上是连续的。
在Java中,顺序表可以通过数组进行实现,也可以通过ArrayList类来实现。
本文将分别介绍这两种实现方式。
二、数组实现顺序表1. 创建顺序表int[] array = new int[capacity];int size = 0;上述代码创建了一个容量为capacity的整型数组array,同时将顺序表的大小初始化为0。
2. 插入元素在顺序表的末尾插入元素:public void addLast(int element) {if (size == array.length) {// 扩容操作int[] newArray = new int[array.length * 2];System.arraycopy(array, 0, newArray, 0, array.length);array = newArray;}array[size] = element;size++;}在指定位置插入元素:public void add(int index, int element) {if (index < 0 || index > size) {throw new IndexOutOfBoundsException();}if (size == array.length) {// 扩容操作int[] newArray = new int[array.length * 2];System.arraycopy(array, 0, newArray, 0, index);System.arraycopy(array, index, newArray, index + 1, size - index); array = newArray;} else {System.arraycopy(array, index, array, index + 1, size - index);}array[index] = element;size++;}3. 删除元素删除末尾元素:public void removeLast() {if (size == 0) {throw new NoSuchElementException();}size--;}删除指定位置的元素:public void remove(int index) {if (index < 0 || index >= size) {throw new IndexOutOfBoundsException();}System.arraycopy(array, index + 1, array, index, size - index - 1);size--;}4. 获取元素获取指定位置的元素:public int get(int index) {if (index < 0 || index >= size) {throw new IndexOutOfBoundsException();}return array[index];}修改指定位置的元素:public void set(int index, int element) {if (index < 0 || index >= size) {throw new IndexOutOfBoundsException();}array[index] = element;}5. 查询元素查找指定元素的索引:public int indexOf(int element) {for (int i = 0; i < size; i++) {if (array[i] == element) {return i;}}return -1;}判断顺序表是否为空:public boolean isEmpty() {return size == 0;}三、ArrayList实现顺序表ArrayList是Java提供的一个动态数组类,它实现了List接口,可以方便地进行顺序表的操作。
java顺序表的基本操作代码Java顺序表是一种基于数组实现的线性结构,具有随机访问、元素插入和删除等基本操作。
在Java中,我们可以通过定义一个数组来创建一个顺序表,并通过编写一些基本操作代码来实现对该顺序表的操作。
一、顺序表的定义和初始化在Java中,我们可以通过定义一个数组来创建一个顺序表。
下面是一个简单的代码示例:```public class SeqList<T> {private Object[] elementData; // 存储元素的数组private int size; // 当前元素个数// 构造函数public SeqList(int capacity) {elementData = new Object[capacity];size = 0;}}```在上述代码中,我们定义了一个SeqList类,其中包含了存储元素的数组elementData和当前元素个数size两个成员变量。
构造函数SeqList(int capacity)用于创建指定长度为capacity的数组,并将当前元素个数初始化为0。
二、顺序表的插入操作1. 在指定位置插入元素在Java中,我们可以通过下标来访问数组中的元素。
因此,在进行插入操作时,需要先将要插入位置之后的所有元素向后移动一位,然后再将新元素插入到指定位置上。
下面是一个简单的代码示例:```// 在指定位置插入元素public void insert(int index, T element) {if (index < 0 || index > size) {throw new IndexOutOfBoundsException("插入位置越界"); }// 判断数组是否已满,若已满则扩容if (size == elementData.length) {ensureCapacity(size * 2);}// 将要插入位置之后的所有元素向后移动一位for (int i = size - 1; i >= index; i--) {elementData[i + 1] = elementData[i];}// 插入新元素elementData[index] = element;size++;}// 扩容方法private void ensureCapacity(int minCapacity) {if (minCapacity > elementData.length) {Object[] newArray = new Object[minCapacity];System.arraycopy(elementData, 0, newArray, 0, size);elementData = newArray;}}```在上述代码中,我们首先判断要插入的位置是否越界。
java常用算法和数据结构Java是一种面向对象的编程语言,它具有丰富的算法库和数据结构库,为开发人员提供了许多常用的算法和数据结构。
下面将介绍一些Java常用的算法和数据结构。
1.排序算法-冒泡排序(Bubble Sort):比较相邻的两个元素,如果顺序错误则交换位置,重复该过程直到整个序列有序。
-插入排序(Insertion Sort):将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分合适的位置。
-选择排序(Selection Sort):每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。
-快速排序(Quick Sort):选择一个基准元素,将数组分为两部分,小于基准的放左边,大于基准的放右边,递归地对左右两部分进行快速排序。
-归并排序(Merge Sort):将数组分为两部分,分别对每个子数组进行排序,然后合并两个有序子数组。
2.搜索算法-二分查找(Binary Search):对有序数组进行查找,每次将查找范围缩小一半。
-广度优先搜索(BFS):以树或图的形式搜索,从根节点开始,逐层扩展搜索范围,直到找到目标节点。
-深度优先搜索(DFS):以树或图的形式搜索,从根节点开始,逐个访问节点的所有邻居节点,直到找到目标节点或搜索完所有节点。
3.数据结构-数组(Array):一组按顺序存储的相同类型元素的集合,通过索引访问元素,可以快速访问元素,但插入和删除元素较慢。
-链表(Linked List):一组通过指针连接的节点存储的元素的集合,支持灵活的插入和删除操作,但访问元素较慢。
-栈(Stack):一种特殊的线性数据结构,遵循先进后出(LIFO)原则,只能在栈顶进行插入和删除操作。
-队列(Queue):一种特殊的线性数据结构,遵循先进先出(FIFO)原则,在队尾插入元素,队头删除元素。
-堆(Heap):一种特殊的树形数据结构,可以快速找到最小(或最大)元素,常用于实现优先队列。
java中sort方法Java中sort方法1. 简介在Java中,sort方法是用于对数组或集合进行排序的常用方法。
它可以按照自然顺序或者指定的比较器来排序,使得元素按照一定的规则排列。
本文将详细介绍sort方法的用法和不同的排序方式。
2. 使用方法public static <T> void sort(List<T> list)public static <T> void sort(List<T> list, Comparator<? s uper T> c)public static void sort(int[] a)public static void sort(int[] a, int fromIndex, int toIn dex)public static void sort(long[] a)public static void sort(long[] a, int fromIndex, int toI ndex)public static void sort(short[] a)public static void sort(short[] a, int fromIndex, int to Index)public static void sort(char[] a)public static void sort(char[] a, int fromIndex, int toI ndex)public static void sort(byte[] a)public static void sort(byte[] a, int fromIndex, int toI ndex)public static void sort(float[] a)public static void sort(float[] a, int fromIndex, int to Index)public static void sort(double[] a)public static void sort(double[] a, int fromIndex, int t oIndex)public static <T> void sort(T[] a)public static <T> void sort(T[] a, int fromIndex, int to Index)sort方法有多个重载。
Java中Map类型数据使⽤LinkedHashMap保留数据的插⼊顺序场景Vue中JS遍历后台JAVA返回的Map数据,构造对象数组数据格式:在上⾯构造以时间为Key,以数量为value的数据格式时,查询⼀段时间内的数据后返回给前端,前端进⾏渲染成时间轴的柱状图。
如果直接使⽤Map<String,Integer> resultMap = new new HashMap<String,Integer>();并且按照时间顺序记录每天的数据时,不会按照插⼊的数据记录。
如果要按照插⼊的数据记录,需要使⽤Map<String,Integer> resultMap = new LinkedHashMap<String,Integer>();注:实现HashMap:最常⽤的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。
HashMap最多只允许⼀条记录的键为Null;允许多条记录的值为Null;HashMap不⽀持线程的同步,即任⼀时刻可以有多个线程同时写HashMap;可能会导致数据的不⼀致。
如果需要同步,可以⽤Collections的synchronizedMap⽅法使HashMap具有同步的能⼒,或者使⽤ConcurrentHashMap。
Hashtable与HashMap类似,它继承⾃Dictionary类,不同的是:它不允许记录的键或者值为空;它⽀持线程的同步,即任⼀时刻只有⼀个线程能写Hashtable,因此也导致了 Hashtable在写⼊时会⽐较慢。
LinkedHashMap保存了记录的插⼊顺序,在⽤Iterator遍历LinkedHashMap时,先得到的记录肯定是先插⼊的.也可以在构造时⽤带参数,按照应⽤次数排序。
在遍历的时候会⽐HashMap慢,不过有种情况例外,当HashMap容量很⼤,实际数据较少时,遍历起来可能会⽐LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量⽆关,⽽HashMap的遍历速度和他的容量有关。
⽤Java实现常见的8种内部排序算法⼀、插⼊类排序插⼊类排序就是在⼀个有序的序列中,插⼊⼀个新的关键字。
从⽽达到新的有序序列。
插⼊排序⼀般有直接插⼊排序、折半插⼊排序和希尔排序。
1. 插⼊排序1.1 直接插⼊排序/*** 直接⽐较,将⼤元素向后移来移动数组*/public static void InsertSort(int[] A) {for(int i = 1; i < A.length; i++) {int temp = A[i]; //temp ⽤于存储元素,防⽌后⾯移动数组被前⼀个元素覆盖int j;for(j = i; j > 0 && temp < A[j-1]; j--) { //如果 temp ⽐前⼀个元素⼩,则移动数组A[j] = A[j-1];}A[j] = temp; //如果 temp ⽐前⼀个元素⼤,遍历下⼀个元素}}/*** 这⾥是通过类似于冒泡交换的⽅式来找到插⼊元素的最佳位置。
⽽传统的是直接⽐较,移动数组元素并最后找到合适的位置*/public static void InsertSort2(int[] A) { //A[] 是给定的待排数组for(int i = 0; i < A.length - 1; i++) { //遍历数组for(int j = i + 1; j > 0; j--) { //在有序的序列中插⼊新的关键字if(A[j] < A[j-1]) { //这⾥直接使⽤交换来移动元素int temp = A[j];A[j] = A[j-1];A[j-1] = temp;}}}}/*** 时间复杂度:两个 for 循环 O(n^2)* 空间复杂度:占⽤⼀个数组⼤⼩,属于常量,所以是 O(1)*/1.2 折半插⼊排序/** 从直接插⼊排序的主要流程是:1.遍历数组确定新关键字 2.在有序序列中寻找插⼊关键字的位置* 考虑到数组线性表的特性,采⽤⼆分法可以快速寻找到插⼊关键字的位置,提⾼整体排序时间*/public static void BInsertSort(int[] A) {for(int i = 1; i < A.length; i++) {int temp = A[i];//⼆分法查找int low = 0;int high = i - 1;int mid;while(low <= high) {mid = (high + low)/2;if (A[mid] > temp) {high = mid - 1;} else {low = mid + 1;}}//向后移动插⼊关键字位置后的元素for(int j = i - 1; j >= high + 1; j--) {A[j + 1] = A[j];}//将元素插⼊到寻找到的位置A[high + 1] = temp;}}2. 希尔排序希尔排序⼜称缩⼩增量排序,其本质还是插⼊排序,只不过是将待排序列按某种规则分成⼏个⼦序列,然后如同前⾯的插⼊排序⼀般对这些⼦序列进⾏排序。
java list string排序方法Java List String排序方法本文将详细介绍Java中对List进行排序的各种方法。
方法一:使用()方法使用Collections类中的sort()方法,可以很方便地对List 进行排序。
List<String> list = new ArrayList<>();// 添加元素到List中(list);方法二:使用Comparator接口如果需要根据特定的规则对List进行排序,可以使用Comparator接口。
List<String> list = new ArrayList<>();// 添加元素到List中(new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {// 按照自定义规则比较s1和s2的大小return (s2);}});方法三:使用Lambda表达式使用Lambda表达式可以更加简洁地实现List的排序。
List<String> list = new ArrayList<>();// 添加元素到List中((s1, s2) -> (s2));方法四:使用Stream API使用Java 8引入的Stream API,也可以对List进行排序。
List<String> list = new ArrayList<>();// 添加元素到List中list = ().sorted().collect(());方法五:使用自定义排序规则可以根据业务需求自定义排序规则,例如按照字符串长度进行排序。
List<String> list = new ArrayList<>();// 添加元素到List中((String::length));注意事项•使用以上方法时,需要确保List中的元素实现了Comparable接口,或者在使用Comparator时传入自定义的比较器。
一、介绍Java中的数组是一种常见的数据结构,而对数组进行排序则是经常需要的操作之一。
在Java中,数组的排序可以通过Arrays类提供的sort方法来实现。
本文将深入探讨Java中数组排序的实现原理、使用方法以及性能分析,帮助读者更好地理解和应用该方法。
二、sort方法的使用在Java中,使用Arrays类的sort方法可以对数组进行快速排序。
该方法有多种重载形式,可以用于对不同类型的数组进行排序,代码示例如下:```java// 对整型数组进行排序int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};Arrays.sort(arr);// 对字符串数组进行排序String[] strArr = {"apple", "banana", "orange", "pear"}; Arrays.sort(strArr);```通过调用sort方法,可以对数组进行升序排序,默认情况下是采用快速排序算法。
三、实现原理1. 快速排序算法Java中的Arrays.sort方法默认采用快速排序算法,该算法的时间复杂度为O(nlogn),是一种高效的排序算法。
快速排序的实现原理是通过分治法将数组分割为较小的子数组,然后分别对子数组进行排序,并最终将排好序的子数组合并起来。
2. 排序规则对于基本数据类型的数组,sort方法会按照元素的自然顺序进行排序;对于对象数组,则要求对象实现Comparable接口或者提供Comparator比较器。
3. 对象排序如果需要对包含自定义对象的数组进行排序,需要确保该对象实现Comparable接口,或者通过Comparator进行比较。
示例如下:```java// 自定义对象实现Comparable接口class Student implements Comparable<Student> {private int id;private String name;// 省略其他属性和方法@Overridepublic intpareTo(Student o) {return this.id - o.id;}}// 使用Comparator进行比较class ScoreComparator implements Comparator<Student> {@Overridepublic intpare(Student o1, Student o2) {return o1.getScore() - o2.getScore();}}```四、性能分析Arrays.sort方法采用快速排序算法,其平均时间复杂度为O(nlogn),是一种高效的排序算法。
hutool排序方法Hutool是一个Java工具库,提供了许多实用的方法和工具类,其中包括排序方法。
本文将介绍Hutool中的排序方法,并详细讲解其使用方式和注意事项。
一、Hutool排序方法简介Hutool提供了多种排序算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序等。
这些排序方法可用于对数组、集合或自定义对象进行排序。
下面将逐一介绍这些排序方法的使用。
二、冒泡排序冒泡排序是一种简单直观的排序算法,它重复地遍历要排序的序列,一次比较两个元素,并根据大小交换位置,最终得到有序序列。
Hutool提供了bubbleSort方法来实现冒泡排序。
使用该方法,我们可以对数组或集合进行排序,示例代码如下:```javaint[] array = {5, 3, 8, 4, 2};ArrayUtil.bubbleSort(array);```三、选择排序选择排序是一种简单直观的排序算法,它每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾,直到全部元素排序完毕。
Hutool提供了selectionSort方法来实现选择排序。
使用该方法,我们可以对数组或集合进行排序,示例代码如下:```javaint[] array = {5, 3, 8, 4, 2};ArrayUtil.selectionSort(array);```四、插入排序插入排序是一种简单直观的排序算法,它将待排序的数据分成已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分的适当位置,直到全部元素排序完毕。
Hutool提供了insertionSort方法来实现插入排序。
使用该方法,我们可以对数组或集合进行排序,示例代码如下:```javaint[] array = {5, 3, 8, 4, 2};ArrayUtil.insertionSort(array);```五、归并排序归并排序是一种稳定的排序算法,它采用分治法的思想,将待排序的数据分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成整体有序序列。
java数组函数的使用方法Java数组函数是Java中常用的一种函数类型,它用于对数组进行操作和处理。
Java数组函数包括了许多常用的函数,例如排序、查找、插入、删除、连接等。
下面将介绍Java数组函数的使用方法。
1.数组排序函数Java数组排序函数可以对数组中的元素进行排序。
排序函数可以根据元素的大小进行排序,也可以根据元素的字典序进行排序。
Java中的数组排序函数有很多种,其中最常用的是Arrays.sort()函数和Collections.sort()函数。
Arrays.sort()函数可以对数组中的元素进行排序,该函数的语法格式为:public static void sort(int[] arr)该函数可以对整数数组进行排序,也可以对其他类型的数组进行排序,例如字符串数组、浮点数数组等。
Collections.sort()函数可以对集合中的元素进行排序,该函数的语法格式为:public static void sort(List<T> list)该函数可以对Java集合中的元素进行排序,例如List、Set等。
2.数组查找函数Java数组查找函数可以在数组中查找指定的元素。
查找函数可以根据元素的值进行查找,也可以根据元素的索引进行查找。
Java中常用的数组查找函数有二分查找函数和线性查找函数。
二分查找函数可以在有序数组中查找指定元素,该函数的语法格式为:public static int binarySearch(int[] arr, int key) 线性查找函数可以在无序数组中查找指定元素,该函数的语法格式为:public static int linearSearch(int[] arr, int key)3.数组插入函数Java数组插入函数可以在数组中插入指定元素。
插入函数可以在数组的指定位置插入元素,也可以在数组的末尾插入元素。
Java中常用的数组插入函数有insert()函数和add()函数。
分类:1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。
先来看看8种排序之间的关系:1.直接插入排序(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。
如此反复循环,直到全部排好顺序。
(2)实例(3)用java实现12345678911121314151617181920package com.njue;publicclass insertSort {public insertSort(){inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,2 5,53,51};int temp=0;for(int i=1;i<a.length;i++){int j=i-1;temp=a[i];for(;j>=0&&temp<a[j];j--){a[j+1]=a[j]; //将大于temp的值整体后移一个单位}a[j+1]=temp;}for(int i=0;i<a.length;i++){System.out.println(a[i]);}2. 希尔排序(最小增量排序)(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差 d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。
当增量减到1时,进行直接插入排序后,排序完成。
(2)实例:(3)用java实现123456789101112131415161718192122232425262728293031publicclass shellSort { publicshellSort(){int a[]={1,54,6,3,78,34,12,45,56,100}; double d1=a.length;int temp=0;while(true){d1= Math.ceil(d1/2);int d=(int) d1;for(int x=0;x<d;x++){for(int i=x+d;i<a.length;i+=d){int j=i-d;temp=a[i];for(;j>=0&&temp<a[j];j-=d){a[j+d]=a[j];}a[j+d]=temp;}}if(d==1){break;}for(int i=0;i<a.length;i++){System.out.println(a[i]);}}3.简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
排序java函数排序是计算机科学中的基本算法之一,它可以将一组数据按照某种规则进行排列。
在Java编程语言中,有许多内置的排序函数可供使用,下面将介绍其中几个常用的排序函数。
1. Arrays.sort()函数Arrays.sort()函数是Java中最常用的排序函数之一。
它可以对数组中的元素进行排序,并按照升序或降序排列。
使用该函数需要传入需要排序的数组作为参数,并可以选择升序或降序排列。
该函数的时间复杂度为O(nlogn)。
示例代码:int[] arr = {4, 2, 8, 5, 1, 9};Arrays.sort(arr); // 升序排列System.out.println(Arrays.toString(arr)); // 输出结果为:[1, 2, 4, 5, 8, 9]2. Collections.sort()函数Collections.sort()函数是Java中对集合进行排序的函数。
它可以对List、Set等集合类型进行排序,并按照升序或降序排列。
使用该函数需要传入需要排序的集合作为参数,并可以选择升序或降序排列。
该函数的时间复杂度为O(nlogn)。
示例代码:List<Integer> list = new ArrayList<>();list.add(4);list.add(2);list.add(8);list.add(5);list.add(1);list.add(9);Collections.sort(list); // 升序排列System.out.println(list); // 输出结果为:[1, 2, 4, 5, 8, 9]3. Arrays.parallelSort()函数Arrays.parallelSort()函数是Java 8中新增的排序函数,它可以使用多线程对数组中的元素进行排序,并按照升序或降序排列。
使用该函数需要传入需要排序的数组作为参数,并可以选择升序或降序排列。