首页 > 其他分享 >哈希排序

哈希排序

时间:2024-01-25 10:48:54浏览次数:29  
标签:10 48 int long write i1 哈希 排序

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[1000009];
inline void read(register int &a)
{
    a=0;char c;
    while((c=getchar())<48);
    do a=(a<<3)+(a<<1)+(c^48);
    while((c=getchar())>47);
} 
void write(int x)
{
	if(x < 10) putchar(x | 48);
	else write(x / 10), putchar(x % 10 | 48);
}
signed main(){
	scanf("%ld",&n);
	for(int i=1;i<=n;++i) read(a[i]);
	for(int i=sqrt(n);i>=1;i/=2){
		for(int i1=i+1;i1<=n;++i1){
        	int cmp=a[i1];
        	int j=i1-i;
        	while(j>=0&&cmp<a[j]){
            	a[j+i]=a[j];
            	j-=i;
            	}
        	a[j+i]=cmp;
    	}
	}
	for(int i=1;i<=n-1;++i) write(a[i]), (i < n && putchar(' ')); 
	write(a[n]);
//	cout<<endl<<clock();
	return 0;
}

标签:10,48,int,long,write,i1,哈希,排序
From: https://www.cnblogs.com/wenzhihao2023/p/17986611

相关文章

  • 归并排序
    归并排序  做法归并,基于分治,但是不同于快排1.确定分界点,这回的分界点是固定的,是mid。=2.排序左边和右边3.归并如图,红色箭头是该区间的最小值,假设答案数组res[]。如果A数组最小值比B数组最小值还小,把该值放入res[]。然后箭头向右移一位。继续这样比较一个区间全部值......
  • 快速排序
    快排 做法 快排,基于分治1.确定分界点,q[l],q[(l+r)/2],q[r],随机,四种都可以,但是推荐q[(l+r)/2]2.[重点]调整区间,划分2个区间,使得左半边所有的数<=x,右半边所有的数>=x,注意,x不一定在两个区间交界处,可能在很奇怪的位置3.递归处理左右两段 比较暴力的做法   先开......
  • KY207 二叉排序树C++
    考二叉搜索树的插入。#include<iostream>usingnamespacestd;structnode{intdata;structnode*left;structnode*right;};typedefstructnodetree;intmain(){intn;while(cin>>n){tree*root=NULL;while(n!=0......
  • 逆序对/归并排序
    逆序对定义:对于给定的一段正整数序列,逆序对就是序列中$a_i>a_j$且$i<j$的有序对。P1908逆序对-洛谷|计算机科学教育新生态(luogu.com.cn)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=2e6+10;intn,m,a[N],c[N],res,num;void......
  • 洛谷题单指南-模拟和高精度-P1786 帮贡排序
    原题链接:https://www.luogu.com.cn/problem/P1786题意解读:此题比较简单,模拟+排序即可解决。需要注意的是,当帮贡或者等级相同时,都要保持原来的顺序,因此需要记录每个人的编号,便于排序。话不多说,直接上代码。100分代码:#include<bits/stdc++.h>usingnamespacestd;constint......
  • 冒泡排序
    冒泡排序//e.g.设计一个函数实现冒泡排序,将一个整型数组排序voidBubble_Sort(int*arr,intsz)//arr是数组,对数组传参,传的是首元素地址&arr[0]{ //确定bubble排序的趟数 inti=0; intcount=0; for(i=0;i<sz-1;i++) { intflag=1; intj=0; for......
  • 用Java实现冒泡排序:实用教程带你入门
    在处理一些特定系统功能时,经常需要使用冒泡排序。例如,在一个电子商务网站中,需要对商品进行排序和过滤。这个时候可以使用冒泡排序对商品进行排序,以便用户能够按照价格、销量、评分等不同字段进行排序。通过使用冒泡排序,系统可以提供更加灵活和个性化的排序选项,以便用户能够更加方便......
  • 哈希表
    目录895最大频率栈优化版本v1优化版本v2看题解了884846一手顺子895最大频率栈复杂度爆了简述一下思路:用栈来存入栈元素,用哈希表来存出现次数,用一个frequency来记录最大出现次数遍历栈,将栈顶元素放到另一个临时栈中,如果栈顶元素的出现次数=frequency,那么说明是最大元素,我就......
  • 冒泡排序、选择排序、二分查找
    1publicstaticvoidmain(String[]args){2//冒泡排序3//定义一个数组,存储一些数据4int[]arr={5,3,1,2,9,6};5System.out.println("=========冒泡排序==========");6//定义一个循环轮数7fo......
  • 哈希学习笔记+杂题(进阶1 字符串哈希)
    哈希杂题前言:竟然下雪了,但是天是灰蒙蒙的。一、哈希学习笔记+杂题(进阶1字符串哈希)相关题单:戳我字符串哈希因为是一种玄学做法,所以具有极强的延展性。所以再碰到字符串的题时,抛开马拉车,kmp,字典树,AC自动机,SA&SAM,先想一下哈希的做法,如果时间复杂度允许,那就可以直接上哈希(虽然你......