1.认识时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那 ...
分类:
编程语言 时间:
2021-06-20 18:14:51
阅读次数:
0
排序原理: 1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。 2. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。 排序过程: 例:{4,5,6,3,2,1} package com.sort; /* * Author: ...
分类:
编程语言 时间:
2021-01-11 11:17:22
阅读次数:
0
简单排序 简单排序,其实就是冒泡排序的一种别称,其工作原理就是:一个有n个元素的列表,经过n-1轮的排序后就是一个有序的列表,每轮选出该轮中最大/小的数填充到新的列表中,因为前n-1个已经排好序,自然而然最后一个已经好了。就好像10个高矮不一的人要排成从矮到低的列,我们就可以,第一次选出最矮的站在新 ...
分类:
编程语言 时间:
2020-07-07 19:47:17
阅读次数:
52
一、简单排序 1.1:直接插入排序:在插入第i个记录时,R1,R2,...Ri-1,Ri已经排好序,这时将关键字ki依次与关键字ki-1, ki-2,...,k1进行比较,从而找到应该插入的位置,然后将ki插入,插入位置及其后面的记录依次向后移。 简单地理解就是从后找起,找到合适的位置插入,然后不断 ...
分类:
编程语言 时间:
2020-06-30 22:09:38
阅读次数:
71
算法描述 大多数情况下,在三种简单排序中,插入排序都是最优的选择。虽然插入排序算法仍需要 O(N^2) 的时间,但在一般情况下,它要比冒泡排序快一倍,比选择排序还要快一点。插入排序可以简单表述为:使“标定项”的一侧局部有序,每次将标定项插入有序一侧,同时将另一侧的下一项设为“标定项”。 代码部分 / ...
分类:
编程语言 时间:
2020-06-16 23:25:17
阅读次数:
70
选择排序,时间复杂度 O(n^2), 下面要注意c语言传参入数组传入的是地址!,所以用sizeof求数组大小的时候,在自定义函数中求出来的sizeof(arr)就是指针的大小,为4;64位系统的话是8; 所以要在main函数中传入自定义方法给数组大小 1 #include <stdio.h> 2 # ...
分类:
编程语言 时间:
2020-05-14 16:01:04
阅读次数:
69
注:本文使用的网课资源为中国大学MOOC https://www.icourse163.org/course/ZJU 93001 简单排序 前提 大多数情况下,为简单起见,讨论从小到大的整数排序 N是正整数 只讨论基于比较的排序( = 冒泡排序 基本思想 : 比较相邻的元素。如果第一个比第二个大,就 ...
分类:
编程语言 时间:
2020-05-05 17:35:38
阅读次数:
68
前言 承接上文 "基础排序算法—冒泡,插入,选择" ,相比之下,归并排序和快速排序更为高效,时间复杂度均为O(nlogn),相比简单排序的O(n^2)好了很多,下面介绍一下这两种算法的思路,实现和主要指标.主要思路来自 正文 归并排序 主要思路 在归并排序采用分冶的思想,使用递归实现.描述如下 1. ...
分类:
编程语言 时间:
2020-04-10 00:45:46
阅读次数:
77
Java算法与数据结构学习 一.数组 1.使用自定义类封装数组 3.查找算法 线性查找 (从头查到尾) 见上面的查找方法 二分法查找 (数组必须是有序数组) 二.简单排序 1.冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。 ...
分类:
编程语言 时间:
2020-03-29 18:00:41
阅读次数:
89
一、冒泡排序 相邻的进行比较,大的向后移动, public class Sort01 { /** * 进行排序 * @param a */ public static void sort(int[] a){ for(int i=a.length-1;i>0;i--){ for(int j=0;j<i ...
分类:
编程语言 时间:
2020-03-22 17:51:40
阅读次数:
89