快排为什么不稳定 举例说明

不稳定 来源于我们的一步步的操作
快排操作思路 从后面寻找小的 去兑换前面寻找的大的 然后直接交换 , ,
下面是实际

比如这样一个数组: 6 100 100 1
第一步 :根据算法操作 1显然会跟100交换 直接就交换了

看到这里应该都能看懂了(前提是有快排算法基础)

下面是我写的代码 注释较少 不宜看懂` private static int[] func(int[] a, int l, int r) {
if(l>=r){return null;}//比如 数组: 6 1 自己慢慢一步步推,能知道有个l是大于r的了
int start = a[l];
int origin_l = l;
int origin_r = r;

	while (l < r) {
		//while(a[r--]>=start){}这不对 加入4 ,1,2,3 //321都不满足 但是r还是减了1
		while (a[r] >= start && l < r) {
			r--;
		}


		while (a[l] <= start && l < r) {
			l++;
		}
		if (l < r) {
			int temp = a[r];
			a[r] = a[l];
			a[l] = temp;
		}
	}
	//走到这 说明lr重合了
	a[origin_l] = a[l];
	a[l] = start;
	//完成左半部分
	func(a, origin_l, l - 1);
	//完成右半部分
	func(a, l + 1, origin_r);
	return a;
}

}
代码注释较少 见谅 `

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis之所以被认为是一种快速的数据存储和缓存解决方案,是由于以下几个原因: 1. 内存存储:Redis将数据存储在内存中,而不是磁盘上。相对于磁盘I/O,内存访问速度更快,可以大大提高读写性能。因此,当需要快速读写数据时,Redis提供了比传统数据库更好的性能。 2. 单线程架构:Redis采用单线程模型处理客户端请求。这使得它能够避免多线程之间的竞争和锁定,简化了并发控制和数据同步的问题。虽然单线程可能会成为性能瓶颈,但Redis通过非阻塞I/O和多路复用技术来充分利用CPU资源,提供了高效的处理能力。 3. 基于异步的持久化:Redis支持异步持久化方式,通过将数据写入磁盘进行快照备份或者将写操作追加到日志文件中,而不是实时写入磁盘。这种方式避免了频繁的磁盘写入操作,提高了写入性能。 4. 数据结构的优化:Redis提供了多种数据结构(如字符串、哈希、列表、集合和有序集合),每种数据结构都经过了精心的优化。例如,Redis的哈希表使用了一些空间和时间上的优化技巧,使得它可以在常数时间内执行插入、删除和查找操作。 举例来说,当使用Redis作为缓存时,可以将热门数据存储在Redis的内存中。这样,当应用程序需要访问这些数据时,Redis可以快速将数据返回给应用程序,而无需执行复杂的数据库查询。通过利用Redis的快速读写能力,可以大大提高应用程序的响应速度和吞吐量。 总之,Redis之所以快速,是由于其内存存储、单线程架构、异步持久化和优化的数据结构等特性的综合效果。这些特性使得Redis成为一个高性能的数据存储和缓存解决方案。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值