C语言常用算法排序

2023-05-16

【1】冒泡排序(面试常问)

1、普通

//小->大
#include <stdio.h>
void bubble(int a[],int size)
{
    int i,j,temp=0;
    for(i=0;i<size-1;i++){ //比较size-1轮
        for(j=0;j<size-i-1;j++){ //每轮比较size-i-1次,-i是每轮后都会有1个数排好了,-1是两两比较,每轮比较size-1次
            if(a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }   
}
int main(int argc, const char *argv[])
{
    int i;
    int a[6] = {4,3,6,2,8,5};
    bubble(a,6);
    for(i=0;i<6;i++)
        printf("%d ",a[i]);
    putchar(10);
    return 0;
}

2、优化

//小->大
#include <stdio.h>
#include <stdbool.h>
void bubble(int a[],int size)
{
    int i,j,temp=0;
    for(i=0;i<size-1;i++){
    	bool swap = false; //假设没有交换
        for(j=0;j<size-i-1;j++){
            if(a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
                swap = true; //交换了就为true
            }
        }
    	if(!swap) //交换了就(!1),没交换就break;
            break;
    }   
}

【2】选择排序

//小->大
#include <stdio.h>
void select(int a[],int size)
{
    int i,j,k=0,temp=0;
    for(i=0;i<size-1;i++){
        k=i;
        for(j=i+1;j<size;j++){
            if(a[k] > a[j]){  //注意是a[k]和a[j]比较,a[k]大就交换
                k=j;
            }
        }
        if(k != i){ 
            temp = a[i];
            a[i] = a[k];
            a[k] = temp;
        }
    }   
}
int main(int argc, const char *argv[])
{
    int i;
    int a[6] = {4,3,6,2,8,5};
    select(a,6);
    for(i=0;i<6;i++)
        printf("%d ",a[i]);
    putchar(10);
    return 0;
}

【3】归并排序

#include <stdio.h>
 
#define A_N 5
#define B_N 7
#define C_N (A_N+B_N)
int main(int argc, const char *argv[])
{
	int i = 0,j = 0,k=0;
	int a[A_N] = {1,3,5,7,9};
	int b[B_N] = {2,4,6,8,10,11,12};
	int c[C_N] = {0};
	while(i<A_N && j<B_N){
		while(a[i] < b[j] && i<A_N){
			c[k++] = a[i++];
		}
 
		while(i<A_N && a[i] > b[j] && j<B_N){
			c[k++] = b[j++];
		}
	}	
	
	while(i == A_N && j<B_N){
		c[k++] = b[j++];
	}
 
	while(j==B_N && i<A_N){
		c[k++] = a[i++];
	}
 
	for(k=0; k<C_N; k++){
		printf("%d\t",c[k]);
	}
	puts("");
 	return 0;
}

【4】快速排序

#include <stdio.h>
void quick_sort(int arr[],int left,int right)
{
	int i = left,j = right;
	int temp=0;
	int pivot;
	pivot = arr[(left + right)/2];
	while(i <= j){
		// 从左到右找到大于等于基准点的元素
		while (arr[i] < pivot)
			i++;
		// 从右到左找到小于等于基准点的元素
		while (arr[j] > pivot)
			j--;
		// 如果i <= j,则互换
		if(i <= j){
			temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
			i++;
			j--;
		}
	}
	if(left < j)
		quick_sort(arr,left,j);
	if(i < right)
		quick_sort(arr,i,right);
}
int main(int argc, const char *argv[])
{
	int arr[10] = {4,5,7,3,8,1,6,9,0,2};
	int i,lenth;
	lenth = sizeof(arr)/sizeof(arr[0]);
	quick_sort(arr,0,lenth-1);
	printf("排序后的结果是> ");
	for(i=0;i<lenth;i++){
		printf("%d ",arr[i]);
	}
	putchar(10);
	return 0;
}

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言常用算法排序 的相关文章

  • java设置Access-Control-Allow-Origin允许多域名访问

    对于前后端分离的项目难免会遇到跨域的问题 xff0c 在设置跨域的问题中有许多需要注意的事情 xff0c 如本次将要将的设置Access Control Allow Origin使其允许多域名请求 1 设置允许多域名访问最简单的方法是使用通
  • Debian10配置静态ip

    查看网卡 xff1a ip addr 修改网卡网络地址配置 xff1a vim etc network interfaces 配置模板 xff1a auto span class token punctuation span 网卡名 spa
  • Docker(四)Image、Container

    一 Image镜像 Docker把应用程序及其依赖 xff0c 打包在image文件里面 只有通过这个文件 xff0c 才能生成Docker容器 image文件可以看作是容器的模板 Docker根据image文件生成容器的实例 同一个ima
  • 报错:ModuleNotFoundError: No module named ‘PIL‘

    运行代码的时候报错 xff0c 如图所示 xff1a 表示python中没有配置pillow库 纠正的步骤 xff1a window 43 R xff0c 并且在框中输入cmd 进入python所在的目录下 xff0c cd appdata
  • Window10 Excel复制粘贴卡死

    Windows10 Excel复制粘贴卡死 excel复制大量数据有时卡死 xff0c 关机重启也没用 网上找了好多方法没效果 xff0c 突然想到windows10有个云剪切板功能 xff0c 就想关了试试没想到解决了 xff0c 哈哈哈
  • (Latex)期刊论文里的数学字符怎么打出来的?

    xff08 Latex xff09 期刊论文里的数学字符怎么打出来的 导入包试一试 by 今天不飞了 最近边查文献边写文章 xff0c 看到别人文章公式里的变量那叫一个花里胡哨 xff0c 再看看自己的 不能忍 xff0c 我也要 于是搜集
  • 面试:ARM篇

    1 IIC I2C 1 由日本飞利浦公司研发的一种 串行半双工的总线 2 采用两根线 SCL 和 SDA 特点 1 硬件比较简单 比较节约资源的一种总线 2 主要用于两个芯片之间的通信 也可以是多主机多从机 但基本不用 3 传输速度一般在4
  • 工作日志——首次通过k8s Elasticsearch获取新建Pod的日志缓慢的原因

    使用k8s Elasticsearch查看pod日志的时候偶尔会遇到这样的情况 xff0c 在创建完容器并运行后去查看日志的时候总是加载不出来 xff0c 需要等待十几秒甚至一分钟才能加载 我 有幸 被分配来解决这个问题 xff0c 经过一
  • WSL2 安装 Ubuntu-20.04 子系统CUDA(Win10和Win11)

    1 安装WSL的CUDA驱动 驱动下载地址 xff1a https developer nvidia com cuda wsl 选好你自己的显卡类型 下载完成后直接默认安装就行 2 安装WSL2 xff08 使用Ubuntu 20 04版本
  • ROS MELODIC ARM64的一些源

    默认注释了源码镜像以提高 apt update 速度 xff0c 如有需要可自行取消注释 deb https mirrors tuna tsinghua edu cn ubuntu ports bionic main restricted
  • 手写spring核心原理Version3

    上两篇博文手写spring核心原理Version1和手写spring核心原理Version2分别介绍了如何完成一个自动注入 以及如何用设计模式进行重构 xff0c 接下来这篇将仿照SpringMVC对参数列表以及methodMapping进
  • Netty Reactor线程模型

    前两篇博文分别介绍了Java 线程模型 xff1a BIO NIO和Reactor线程模型 xff0c 本篇博文将介绍Reactor线程模型在Netty中的实际应用 Netty模型 Netty模型的简单介绍 Netty 主要基于主从 Rea
  • JVM:类的加载过程

    类的加载过程 类的加载过程整体可以分为五个阶段 xff1a 加载 验证 准备 解析 初始化 xff0c 其中验证 准备和解析又被概括为链接 加载 通过一个类的全限定名获取定义此类的二进制字节流 xff1b 将这个字节流所代表的的静态存储结构
  • Hive On Tez 进度条不显示问题修复

    问题描述 用Hive客户端使用beeline命令执行SQL的时候 xff0c 有些情况下会显示进度条 xff0c 有些情况不显示进度条 显示进度条的情况 设置默认执行引擎为Tez lt property gt lt name gt hive
  • DataTables从安装到入门的详细教程之一:DataTables介绍及安装

    DataTables介绍 Datatables是一款jquery表格插件 它是一个高度灵活的工具 xff0c 可以将任何HTML表格添加高级的交互功能 分页 xff0c 即时搜索和排序 几乎支持任何数据源 xff1a DOM xff0c j
  • CSS换行和不换行

    强制不换行 div white space nowrap 自动换行 div word wrap break word word break normal 强制英文单词断行 div word break break all
  • Linux:Shell脚本基本命令

    24 span class token keyword if span span class token punctuation span span class token punctuation span span class token
  • Spring Boot设置值:分别用@ConfigurationProperties和@Value给属性设值及其区别

    目录 64 ConfigurationProperties给属性映射值 编写JavaBean 编写配置文件 测试类 xff1a 运行结果 xff1a 64 Value给属性设置值 编写JavaBean 运行结果 xff1a 64 Confi
  • Mac Intrellij IDEA中使用debug调试

    目录 一 Debug开篇 二 基本用法 amp 快捷键 三 变量查看 四 计算表达式 五 智能步入 六 断点条件设置 七 多线程调试 八 回退断点 九 中断Debug 十 附 xff1a JRebel激活 Debug用来追踪代码的运行流程

随机推荐

  • Docker创建容器步骤解析

    创建hello world容器 以创建一个简单的hello world容器为例 xff0c 介绍docker创建容器的几大步骤 运行命令 xff1a docker run hello world docker运行步骤分析
  • 什么是代理服务器及其作用

    什么是代理服务器 代理服务器 xff08 Proxy Server xff09 是网上提供转接功能的服务器 xff0c 在一般情况下 xff0c 我们使用网络浏览器直接去连接其他Internet站点取得网络信息时 xff0c 是直接联系到目
  • sudo apt-get update执行失败问题解决

    错误 在执行sudo apt get update命令时 xff0c 执行结果失败 xff0c 错误信息如下 xff1a 获取 xff1a 1 http repo mysql com trusty InRelease 33 5 kB 100
  • @EntityListeners(AuditingEntityListener.class)介绍

    64 EntityListeners 源码 Specifies the callback listener classes to be used for an entity or mapped superclass This annotat
  • windows配置hadoop(详细)

    一 环境 windows7 64位 hadoop2 7 二 安装java1 8 xff0c 并配置环境变量 下载地址 xff1a http www oracle com technetwork java javase downloads j
  • Windows更新策略配置

    两个步骤 1 开启自动更新服务 2 配置自动更新策略 开启服务 Windows Update的服务名为wuauserv 可以通过命令行的方式进行开启 xff08 管理员权限 xff09 xff0c sc命令使用方法 xff1a sc命令使用
  • 数据库、MySQL与Python这一篇就够了

    lt 1 gt 数据库介绍 什么是数据库 xff1f 数据库 xff08 Database xff09 是按照数据结构来组织 存储和管理数据的仓库 xff0c 每个数据库都有一个或多个不同的API用于创建 xff0c 访问 xff0c 管理
  • Python:同行if...else...详细教程

    我最近为游戏Apple Clicker写成就系统 xff0c 加上后整个程序的代码竟然超过2200行 xff0c 窗口启动时间也很慢 xff0c 主要是if else 使用的太多 于是查了查缩短代码的方法 xff0c 总结如下 xff1a
  • ARM:驱动开发1

    linux内核模块 1 模块三要素 xff1a 内核模块不能单独执行 xff0c 也不能自动执行 span class token comment 入口 xff1a span span class token keyword static
  • Python:环境变量配置方法 详细教程

    最近有人问我如何配置python环境变量 xff0c 这篇文章就向大家介绍python环境变量配置方法 python环境变量的配置方法 xff1a 首先鼠标右键此电脑 xff0c 选择属性 xff1b 然后点击高级系统设置 xff0c 点击
  • Python - 字符串格式化详解(%、format)

    有人问我python的format函数怎么用 xff0c 这篇文章向大家介绍format函数用法 Python在字符串格式化的两种方式 format xff0c 关于整数的输出 o xff1a oct 八进制 d xff1a dec 十进制
  • Python 字典(Dictionary)操作详解

    这篇文章主要介绍了Python 字典 Dictionary 的详细操作方法 xff0c 需要的朋友可以参考下 Python字典是另一种可变容器模型 xff0c 且可存储任意类型对象 xff0c 如字符串 数字 元组等其他容器模型 一 创建字
  • Python中zipfile压缩包模块的使用

    本文主要介绍了Python中zipfile压缩包模块的使用 xff0c zipfile 模块提供了创建 读取 写入 添加及列出 ZIP 文件的工具 xff0c 本文做一个简单的总结 简介 ZIP 文件格式是一个常用的归档与压缩标准 xff0
  • python中@contextmanager实例用法总结

    本文是对python中 64 contextmanager的简单总结 在对于python中的装饰器 xff0c 我们一般会使用它辅助方法 在我们学习的上下文管理器中 xff0c 有一个 64 contextmanager装饰器 xff0c
  • 【Python】中文乱码问题与解决方案 深入分析

    一直以来 xff0c python中的中文编码就是一个极为头大的问题 xff0c 经常抛出编码转换的异常 xff0c python中的str和unicode到底是一个什么东西呢 xff1f 在本文中 xff0c 以 39 哈 39 来解释作
  • 004.CMake构建目标的小练习

    文章目录 HelloWorld项目与hello exeSayHello库的创建和使用查看依赖关系总结 前文说了如何使用add executable 和add library 命令定义对应的目标 xff0c 本文建立一个玩具项目 xff0c
  • swift 中错误处理

    swift 中错误处理 1 开发环境说明2 自定义错误类型3 try 的使用方式4 do catch的使用5 try 的使用方式6 defer的使用7 养眼图片一张 1 开发环境说明 系统版本 xff1a macOS Catalina 10
  • verilog实现基于Cordic算法的双曲函数计算

    Cordic算法可以用FPGA硬件来实现三角函数 xff0c 向量旋转 xff0c 指数函数以及三角函数等数值计算 xff0c 它是一种从一般的矢量旋转方程中推导得出 采用用不断的旋转求出对应的正弦余弦值 xff0c 是一种近似求解法 旋转
  • Matlab中table类型使用技巧

    在处理一些较复杂的表格数据时 xff0c 直接导入为数组并不方便处理 xff0c 这时候需要使用table类型数据来更好的存储和处理数据 例如 xff0c 在处理某实验数据时 xff0c 将excel直接导入至matlab中的table数据
  • C语言常用算法排序

    1 冒泡排序 xff08 面试常问 xff09 1 普通 span class token comment 小 gt 大 span span class token macro property span class token direc