当前位置: 首页 > news >正文

排序入门简介

插入排序

ai前面的i-1个元素都是有序的,再插入第n个

直接插入排序:

直接把an和前面的n-1个依次比较

折半插入排序:

前面的n-1个先取中间的和an比较

希尔排序:

 交换排序:

冒泡排序:

每一次都把剩下的数里最大的放最后

代码:

#include <stdio.h>
#define MAXN 10000
int main()
{
	int i, index, j, n, temp, k;
	int a[MAXN];
	scanf("%d", &n);
	for(i = 0; i<n; i++){
		scanf("%d", &a[i]);
	}
	for(i = 1; i<n; i++){
		for(k = 0; k<n-1; k++){
			if(a[k]>a[k+1]){
				temp = a[k];
				a[k] = a[k+1];
				a[k+1] = temp;
			}
		}
	}
	for(i = 0; i<n; i++){
		if(i == 0){
			printf("%d", a[i]);
		}else{
			printf(" %d", a[i]);
		}
	}
	return 0;
}

快速排序:

基本思想: 
任取一个元素(如第一个)为中心;
所有比它小的元素一律前放,比它大的元素一律后放,形成左右两个子表; 
对各子表重新选择中心元素并依此规则调整, 直到每个子表的元素只剩一个

选择排序:

简单选择排序:

 在待排序的数据中选出最大/小的元素放在其最终位置

写代码时应注意:

1.用序号而不是原数查找 2.元素的交换与各层嵌套的关系 3.每一个a[i]和a[index]比较

#include <stdio.h>
#define MAXN 10000
int main()
{
	int i, index, k, n, temp;
	int a[MAXN];
	scanf("%d", &n);
	for(i = 0; i<n; i++){
		scanf("%d", &a[i]);
	}
	for(k = 0; k<n-1; k++){
		index = k;
		for(i = k+1; i<n; i++){
			if(a[i]<a[index]){
				index = i;
			}
		}
		temp = a[index];a[index] = a[k];a[k] = temp;
	}
	for(i = 0; i<n; i++){
		if(i == 0){
			printf("%d", a[i]);
		}else{
			printf(" %d", a[i]);
		}
	}
	return 0;
}

堆排序:

若在输出堆顶的最小值(最大值)后,使得剩余n-1个元素的序列重又建成一个堆,则得到n个元素的次小值(次大值)……如此反复,便能得到一个有序序列,这个过程称之为堆排序。

建立堆:先初始无序地顺序存到二叉树里。从倒数第二层开始让每一个结点为根的子树都调整为堆
去掉堆顶之后再次调整成一个堆:以堆中最后一个元素替代之;然后将根结点值与左、右子树的根结点值进
行比较,并与其中小者进行交换

归并排序:

将两个有序子序列归并成一个(比较两个指针所指的元素,谁小就要谁,并且指针后移)。排序时,先两两分组,再把它们归并成一个

桶排序:

即分配+收集:先按个位排,在桶里的都是按顺序拿和放,再十位,再百位

相关文章:

  • 配置mysql8.0使用PXC实现高可用。
  • AWS上基于Llama 3模型检测Amazon Redshift里文本数据的语法和语义错误的设计方案
  • Ubuntu 22.04 Desktop企业级基础配置操作指南
  • 【C++】智能指针的使用及其原理
  • 基于卷积神经网络的图像融合方法
  • doris:物化视图概览
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析①】
  • Linux系统运行模式和链接
  • 什么是UV环形光源
  • Python表格可视化工具:将HTML表格转换为精美图片
  • Java 用于人工智能
  • 借助天工AI 生成产品彩页体验 (5G 远距CPE产品彩页)
  • 深度学习、传统机器学习和卷积神经网络中的Transformer、scikit-learn和TextCN
  • DeepSeek教unity------MessagePack-04
  • 【C语言】C语言 好声音比赛管理系统(含源码+数据文件)【独一无二】
  • Python的那些事第二十一篇:Python Web开发的“秘密武器”Flask
  • 知识拓展:Python序列化模块 marshal 模块详解
  • 坑多多之ac8257 i2c1 rtc-pcf8563
  • JVM的性能优化
  • 【进阶】MySQL高级篇超详讲解!!!
  • 一家做公司点评网站/网络推广优化seo
  • 网站建设页面大小/2023新冠结束了吗
  • wordpress 4 安装/seo点击软件手机
  • 内蒙古网站建设电话/搜狗搜索引擎推广
  • 一个平台怎么推广/seo内容优化方法
  • 做网站那种语言好/关键词查询网址