排序算法核心内容

100 篇文章 0 订阅
订阅专栏
7 篇文章 0 订阅
订阅专栏

排序算法复习

前言


首先复习效率,其次复习常见的三种面试代码,最后粘贴一下之前做了好久的效率分析图,(话说当初那个文档做了20个小时,都怪自己反应有些慢呢)。 

效率分析


三种核心算法(一般写代码)


快速排序 

public static void quickSort(int[] array) {
		quickSortInternal(array,0,array.length-1);
	}
	private static void quickSortInternal(int[] array, int left, int right) {
		// TODO 自动生成的方法存根
		if(left>=right) return;
		int i=left,j=right;
		int pivot=partition(array,left,right);
		quickSortInternal(array,left,pivot-1);
		quickSortInternal(array,pivot+1,right);
	}
	private static int partition(int[] array, int left, int right) {
		// TODO 自动生成的方法存根
		int i=left,j=right;
		int pivot=left;
		while(i<j) {
			while(i<j&&array[j]>=array[pivot]) {
				j--;
			}
			while(i<j&&array[i]<=array[pivot]) {
				i++;
			}
			swap(array,i,j);
		}
		swap(array,i,left);
		return i;
	}

堆排序

        public  void heapSort(int[] array) {
		createHeap(array);
		for(int i=0;i<array.length-1;i++) {
			swap(array,array.length-1-i,0);
			shiftDown(array,array.length-1-i,0);
		}
	}
	private static void createHeap(int[] array) {
		for (int i = (array.length - 1) / 2; i >= 0; i--) {
			shiftDown(array, array.length, i);
		}
	}
	public static void shiftDown(int[] array, int size, int index) {
		int left=2*index+1;
		while(left<size) {
			int right=left+1;
			int max=left;
			//存在条件下
			if(right<=size-1)
				max=array[left]>=array[right]?left:right;
			if(array[index]>=array[max]) {
				return;
			}
			//需要调整
			swap(array,index,max);
			index=max;
			left=2*index+1;
		}
	}

 归并排序

public static void mergeSort(int[] array) {
		mergeSortInternal(array,0,array.length);
	}
	private static void mergeSortInternal(int[] array, int low, int high) {
		// TODO 自动生成的方法存根
		if(low>=high-1) return;
		int mid=(low+high)/2;
		mergeSortInternal(array,low,mid);
		mergeSortInternal(array,mid,high);
		merge(array,low,mid,high);
	}
	private static void merge(int[] array, int low, int mid, int high) {
		// TODO 自动生成的方法存根
		int[] extra=new int[high-low];
		int i=low,j=mid;
		int k=0;
		//核心代码
		while(i<mid&&j<high) {
			extra[k++]=array[i]<=array[j]?array[i++]:array[j++];
		}
		//剩余元素归位
		while(i<mid) {
			extra[k++]=array[i++];
		}
		while(j<high) {
			extra[k++]=array[j++];
		}
		//搬回原位置
		System.arraycopy(extra, 0, array, low, extra.length);
	}

实验检验


结论:排序混乱(不要求稳定性)的时候,快速排序和堆排序排名第一档次,数据量小的时候插入排序还是不错的哦,果然冒泡算法还是很弟弟啊,被誉为只能出现在“教科书上的代码”。数据量特别大的时候,外部排序中使用归并排序的较多,其核心思想就是排序两个有序的数组。

老师有话说


学校上实验课的时候,老师就强调面试的时候,听到排序算法,一定要回答分为内部排序和外部排序,内部排序常见的7中算法中,数据量大时,……,数据量小时,……,……算法比较稳定,时间复杂度分别是那么,特别强调了要说外部排序,基于败者树的64路归并啦什么的都可以说,嗯~ o(* ̄▽ ̄*)o,听起来还听高大上的,当时好佩服啊老师说了一串一串的,所以加油吧。

SP:特别要注意的是组织语言别紧张哦

经典排序算法动画演示文件
05-14
排序算法动画演示文件是学习和理解经典算法的绝佳资源,特别是对于那些准备面试的人来说,它们是必备的。这些动画演示以直观明了的方式展示了冒泡排序、选择排序、快速排序等多种经典算法的工作原理和执行过程。通过...
十大经典排序算法
wangnaisheng的专栏
07-07 3292
排序算法
核心排序算法
guangod的博客
05-13 266
正如看JAVA从入门到精通一样,总有些常规和核心的,而前面的插入、选择、冒泡排序都是简单的排序方法,算不上实用排序.真正体现计算机优势的排序算法正是,归并,快速,堆排序. 插入,选择、冒泡,时间复杂度都为O(n^2),空间复杂度都是O(1)。 而归并、快速、堆排序时间复杂度都为O(N*logN) 空间复杂度,归并是O(N)快速是O( logN) 堆O(1) 归并排序: /** * ...
排序算法核心
qmx0623的博客
06-15 382
1.插入排序 //第一个默认有序for(int i = 1; i //从后往前 for(int j = i-1; j >= 0; j--){ if(a[j]>a[i]){ exch(a, i, j); i--; } } } 2.选择排序 for (int i = 0; i < a.length; i++){ int min = i; //剩
八大排序核心算法详解
cls的博客
01-20 1597
八大排序 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。 内部排序:数据元素全部放在内存中的排序。 外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能..
堆排序的核心思想
夜空繁星VV
01-02 183
求一个数的父节点(k-1)/ 2 父节点下的子节点分别为 2 * k +1 和 2 * k + 2
排序算法
12-22
  快速排序在大多情况下的表现优异,其核心思想为分而治之。   具体操作:对于一个长度为nnn的数组AAA,根据改变元素x=A[i]x=A[i]x=A[i]的位置,使得数组AAA满足: * xxx左边的元素都不大于xxx。 * xxx右边的...
Unicode 排序算法 的Python实现
06-08
Unicode 排序算法和 pyuca 也支持收缩和扩展。收缩是多个字母被视为一个单元的地方。在西班牙语中,ch被视为介于cand之间的字母,d 因此,例如,开头的单词ch应该排在所有其他以 开头的单词之后c。扩展是单个字母被...
常用排序算法介绍_示例程序|排序算法_程序.rar
10-26
常用排序算法示例程序,内含TChart8控件。 示例程序涉及15种排序算法,包含每种算法核心思想的介绍;可设置排序的数据个数、数据刷新显示时间等;使用TChart控件显示数据,显示界面可缩放。
数据结构实践:10个核心课程设计实例,包括二叉树、排序算法
最新发布
04-19
3. **快速排序**:一种分治算法,通过选择一个“基准”值将数据分为两部分,一部分数据比基准值小,另一部分数据比基准值大,然后递归地对这两部分数据进行快速排序操作。 此外,该资源包还可能包含其他经典的数据...
排序算法详解
热门推荐
Gandoph的博客
10-14 3万+
一、堆排序算法原理和动态图解        将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次最大值。如此反复执行,就能得到一个有序序列了。这个过程其实就是先构建一个最大/最小二叉堆,然后不停的取出最大/最小元素(头结点),插入到新的队...
排序方法的核心思想总结
Sigma_i的博客
08-28 954
总结一下排序算法中的核心思想 1.BubbleSort 冒泡法的核心是双重循环: 第一层循环表明需要轮次的次数,他的变量i只是标记轮换了多少次,与交换没有直接关系,在一个数组中,需要轮次数为a.length-1次,所以i的取值可设置为1—a.length-1。 第二层循环的变量表示的为a[j]与a[j+1]的比较与交换,不断地递进,而且是相邻的两个元素交换,在进行第i轮次,已经有i
C语言文件操作——输入数据存到文件,从文件读取到结构体
青春无问西东 岁月自成芳华
10-15 2万+
早年真题试卷最后大题几乎都是手写文件的一些操作程序,虽然文件操作并不难,但是真正手写出来感觉又是很不一样的。
数据结构核心-八大排序算法
sinat_39616953的博客
05-10 290
数据结构核心-八大排序算法 原文:http://blog.csdn.net/u010850027/article/details/49362279         排序是数据处理中一种很重要也很常用的运算,一般情况下,排序操作在数据处理过程中要花费许多时间,为了提高计算机的运行效率,我们提出并不断改进各种各样的排序算法,这些算法也从不同角度展示了算法设计的重要原则和技巧。在小编的
几种排序的算法(只含代码
weixin_44659133的博客
05-07 98
每次用到排序算法时都要临时翻书或百度,但是用完之后又忘了。。。 只附代码,便于查阅。随时补充。 (均是从小到大排序) 一、直接插入排序 void Insert(int a[], int n){ int i,j,temp; for(i=1;i<n;i++){ //i从第二个位置开始,最后一个位置结束 temp=a[i]; j=i-1; while(j>=0 &amp...
排序算法总结(原理及核心代码
weixin_30569153的博客
05-14 254
排序算法 数组 a[n]或A[n] 从小到大 一、冒泡排序 原理:重复走过要排序的数组(n-1次),依次比较相邻元素的大小,若不对就进行交换,每趟进行(n-1-j次)比较 代码如下: For(int j=0;j<n-1;j++) For(int i=0;i<n-1-j;i++) If(a[i]>a[i+1])swap(a[i],a[i+1]); 二、选择排序 原...
数据结构篇——常见排序算法核心思想简单梳理
秋千不会坠的博客
03-23 603
排序算法核心思想总结 emmm 写的比较简单,不适合新手看。适合已经手写过一遍的人复习用。 冒泡排序 核心思想 两个循环让最小的数一直往上移动 最小的,第二小的。。。循环到最后就已经排好序了 选择排序 核心思想 找出数组中最小的一个数 与数组中第一个交换 以此类推,找第二个。。。循环到整个数组结束 插入排序 核心思想 把数组看做左右两份。左边是有序的,右边是无序的。 从左向右遍历右数组(...
vue/elementUI 输入框disabled颜色问题解决
weixin_43914278的博客
11-04 7198
elementUI本身输入框el-input自带了disabled属性,但是当你需要覆盖其样式或者自己写一个自己的my-el-input时,不妨用下面的代码,注意opacity 1表示不透明,cursor:表示滑动过去鼠标为禁止样式 /deep/ input[disabled],input:disabled,input.disabled{ -webkit-text-fill-color:#C0C4CC; background: #F5F7FA; -webkit-opacity:1; opac
【分析】字符串排序程序设计
weixin_43914278的博客
05-20 3094
字符串排序程序设计 编写一个字符串排序程序,对一个字符串中的数值进行从小到大的排序 例如字符串“36 9 78 29 -7 20” 要求变成 “ -7 9 20 29 36 78 ” 目录 字符串排序程序设计 编写一个字符串排序程序,对一个字符串中的数值进行从小到大的排序 需求分析:字符串数值排序观察: 字符串使用空格来对数值进行分割主要问题:字符串不能比较数字大小解决方案:...
冒泡排序算法核心思想
11-13
冒泡排序算法核心思想是通过不断比较相邻的两个元素,如果它们的顺序错误就交换它们的位置,直到没有任何一对数字需要比较为止。这样一轮比较下来,最大(或最小)的数字就会被交换到最后(或最前)的位置。然后再...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • MATLAB一元线性回归 41944
  • idea eval reset的使用 19055
  • 计算机网络——HTTP选择题专题 17045
  • MATLAB 心形曲线(大赏) 16663
  • 【视频联动】编译原理:写出布尔表达式A or (B and not(C or D)) 的四元式序列。说明:按照控制语句中的布尔表达式翻译 9057

分类专栏

  • 安全操作项目 11篇
  • C# 1篇
  • 内窥镜项目 16篇
  • 趣玩一下 5篇
  • Java 100篇
  • 作业 4篇
  • Linux 6篇
  • 达梦 1篇
  • ElementUI 3篇
  • oracle 4篇
  • 笔记 3篇
  • python 10篇
  • MySQL 9篇
  • 算法 7篇
  • 随笔 6篇
  • C语言 30篇
  • Qlik 1篇
  • 测试 1篇
  • 备忘录 5篇
  • 计算机网络 12篇
  • TODO 6篇
  • Matlab 13篇
  • 数据结构 11篇
  • C++ 2篇
  • bit位 13篇

最新评论

  • 个人理解:@param和@requestParam区别

    Lpy2569: 咱俩理解的一样哈哈表情包

  • 【视频联动】编译原理:写出布尔表达式A or (B and not(C or D)) 的四元式序列。说明:按照控制语句中的布尔表达式翻译

    m0_60571466: 表情包表情包b站视频在哪呀 搜不到 表情包

  • 【视频联动】编译原理:写出布尔表达式A or (B and not(C or D)) 的四元式序列。说明:按照控制语句中的布尔表达式翻译

    m0_60571466: 没看懂啊

  • 快照读通过MVCC解决不可重复读&当前读通过间隙锁解决幻读

    Jing_rui: RR级别:张三 张小三 RC级别:张三 张三 我觉得这个搞反了,第一个应该是RC,第二个是RR

  • 画出离散正弦序列sin( Ωk)的波形

    2301_77078481: 请问有没有离散正弦序列的代码啊

大家在看

  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源! 320
  • 最新情侣飞行棋高阶羞羞版,解锁私密版情侣小游戏,文末有福利!
  • 席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程! 559
  • 【产品经理修炼之道】- 中台规划深度解析:用户、机制、系统 826
  • 我的 Mac 2014 使用 High Sierra 继续保持生产力的秘密

最新文章

  • x-anylabelimg如何标识人脸
  • 【笔记】深度学习入门
  • Retinaface与hopenet网络
2024年23篇
2023年69篇
2022年26篇
2021年58篇
2020年92篇
2019年99篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司坪地百度竞价包年推广价格东营关键词排名哪家好临沂外贸网站设计哪家好嘉兴网站优化多少钱鞍山百度标王哪家好石岩企业网站制作价格台州百度标王公司济源网站优化哪家好绵阳网站改版价格北海模板网站建设报价铜川SEO按天收费泰安百度竞价推荐石岩模板网站建设价格晋中网站设计价格黄冈阿里店铺运营哪家好商洛网站推广系统报价宿迁网站建设济源网站优化按天收费价格哈密设计网站南阳企业网站改版推荐郴州建站价格哈密网站改版多少钱辽阳建网站价格黄冈网站优化价格坪地推广网站哪家好铜川百度竞价包年推广推荐达州网站建设设计推荐朝阳百搜标王聊城网站优化多少钱永湖百搜标王歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化