C语言 两种简单的比较方法(冒泡法和比较法)

2023-11-08 19:51

本文主要是介绍C语言 两种简单的比较方法(冒泡法和比较法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C语言

冒泡法
原理:

从前向后两两比较,如果前面大于后面,则交换 每一次交换确定一个值。因为最大的值在最后因此也称为沉石法。

代码如下:

void BubbleSort(int* arr, int len)
{for (int i = 0; i < len - 1; i++) //控制层数{for (int j = 0; j < len - 1 - i; j++) //控制次数{if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}

选择法
原理:

每一轮将待排序序列中最小值和待排序序列的第一个值进行交换。

代码如下:

void InsectSort(int* arr, int len)
{int minindex = 0;for (int i = 0; i < len - 1; i++)//控制层数{minindex = i;for (int j = i; j < len; j++)//找到待排序序列的最小值所在的下标   //优化:int j =i+1;{if (arr[j] < arr[minindex]){minindex = j;}}if (minindex != i)//优化:当最小值所在下标和带排序序列的第一个值 不是用一个的时候,才交换{int tmp = arr[i];arr[i] = arr[minindex];arr[minindex] = tmp;}}
}

总结

  1. 两种比较方法都是进行for循环的嵌套;
  2. 两种比较方法中for循环的嵌套第一层都是控制层数,第二次控制比较的次数;
  3. 对于选择法而言,是找到待排序序列的最小值所在的下标,这样才可以将交换的值正确放进交换的位置,不然进行的只是值传递。

应用:将数组3,6,1,9,2,7按照从小到大的顺序排序。

#include<stdio.h>
#include<string.h>
void Show(int* arr, int len)
{for (int i = 0; i < len; i++){printf("%d ", arr[i]);}printf("\n");
}
int main()
{int arr[] = { 3,6,1,9,2,7 };//BubbleSort(arr, sizeof(arr)/sizeof(arr[0]));InsectSort(arr, sizeof(arr) / sizeof(arr[0]));Show(arr, sizeof(arr) / sizeof(arr[0]));return 0;
}

运行结果:
冒泡法.
在这里插入图片描述
选择法.
在这里插入图片描述

这篇关于C语言 两种简单的比较方法(冒泡法和比较法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372124

相关文章

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原