排序
Celia_喵喵
这个作者很懒,什么都没留下…
展开
-
数组及基本排序算法
数组数组定义一维数组dataType[] arrayRefVar = new dataType[arraySize];dataType[] arrayRefVar = {value0, value1, …, valuek};二维数组type[][] typeName = new type[typeLength1][typeLength2];Arrays类java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。asListpublic static <T&g原创 2020-05-27 20:17:13 · 241 阅读 · 0 评论 -
直接插入排序
排序就是把一组数据,按关键字排成有序数列。根据储存位置的不同分为内部排序和外部排序,在这里首先介绍内部排序。内部排序根据排序算法或逻辑分为:插入排序:直接插入排序、希尔排序;选择排序:简单选择排序、堆排序;交换排序:冒泡排序、快速排序;归并排序;基数排序。接下来对每种排序方法的思想进行介绍,并代码实现,以及分析其时间复杂度、空间复杂度和稳定性。直接插入排序把一个需要排序的数组分为已排序好原创 2017-08-28 18:13:20 · 401 阅读 · 0 评论 -
希尔排序
其基本思想是:给一个增量组合,将待排序序列分为若干子序列分别进行直接插入排序,是整个序列较有序,再对整个序列进行一次插入排序。代码实现如下:void shell(int arr[], int arr_len,int dk)//类似于直接插入排序,但是和当前数比较的数是子序列中的下一个,不是原数组中的下一个{ int i, j; int tmp; for (i = dk; i原创 2017-08-28 19:02:39 · 295 阅读 · 0 评论 -
简单选择排序
第一趟排序中找到最小的数(升序),第二趟排序中找到剩下的数中最小的数,以此类推,直到全部排完。void SelectSort(int arr[],int len){int i;int j;int min;//最小数的下标int tmp;for(i=0;i<len;i++){min=i; for(j=i+1;j<len;j++) { if(arr[j]<arr[min])原创 2017-10-13 17:16:39 · 223 阅读 · 0 评论 -
堆排序
介绍堆排序之前,先介绍一下堆。堆分为大根堆和小根堆,大根堆是指父节点的数据大于等于子节点的数据,小根堆是指父节点的数据小于等于子节点的数据。堆排序就是指先把数据写成堆(大根堆或小根堆)的形式,然后输出堆顶元素,接着进行堆调整,是剩下的n-1个元素重新构成堆。如此反复执行,就可以得到有序数列。以大根堆为例,就把大的数放到后面, 因此,大根堆适用于升序,小根堆适用于降序。那么这原创 2017-10-13 17:45:21 · 422 阅读 · 0 评论 -
归并排序
归并排序分两步:1、分:二分法,让每个组元素都有序,只有每个组只有一个元素时才一定有序。2、合:按照二分法分出的小组组合。void Merge(int arr[], int tmp[], int startIndex, int midIndex, int endIndex){ int i = startIndex; int j = midIndex + 1; int k原创 2017-10-23 23:27:29 · 215 阅读 · 0 评论 -
冒泡排序
冒泡排序,每趟从第一个数开始,与第二个数比较,如果第一个数大于第二个数,交换位置;然后第二个属于第三个数比较,如果第二个数大于第三个数交换位置;接着第三个数与第四个数比较,以此类推。每一趟排序中找到最大的数放在最后,在下趟排序中,最后一个数不参与排序。void BubbleSort(int arr[],int len){ int i; int j; int tmp;原创 2017-10-16 23:09:48 · 162 阅读 · 0 评论