【C语言排序问题】|区分选择排序以及起泡排序
选择排序:
每轮通过比较找出最值数字角标,明确后将目的位置(最前/后递值变化)角标进行对调。因此每轮内层循环中所有数字只进行一次两两交换。
- 比较环节中直接带入num与num[j]比较不妥当,应为num[m]与num[j]比较。原因:每轮内层循环中i是具体的初始化变量,不会再发生改变。而m会随着则比较的变化而变化,更具有灵活性。
- 顺序问题:将视具体情况而定,与下标以及排列顺序有关。
起泡排序:
每轮将两两数字进行比较,如果不满足条件则进行交换。因此每轮内层循环要交换m-i次。
1.1(选择排序-从后往前依次找出最大角标)
for (i = N - 1; i >= 0; i--){m = i;for (j = i - 1; j >= 0; j--){if (num[m] < num[j]){m = j;}}if (m != i){temp = num[i];num[i] = num[m];num[m] = temp;}}
1.2(选择排序-从前往后依次找出最小角标)
for (i =0; i < N; i++){m = i;for (j = i+1; j < N; j++){if (num[m] > num[j]){m = j;}}if (m != i){temp = num[i];num[i] = num[m];num[m] = temp;}}
1.3(选择排序-相向而行比较,固定最小放最前,从后往前找)
for (i =0; i < N; i++){m = i;for (j = N-1; j >i; j--){if (num[m] > num[j]){m = j;}}if (m != i){temp = num[i];num[i] = num[m];num[m] = temp;}}
1.4(选择排序-相向而行比较,固定最小放最前,从后往前找)
for (i =0; i < N; i){m = i;for (j = i - 1; j >= 0; j--){if (num[m] < num[j]){m = j;}}if (m != i){temp = num[i];num[i] = num[m];num[m] = temp;}}
2.1(起泡排序)
for (i =0; i < N; i++){for (j = 0; j < N; j++){if (num[j] > num[j + 1]){temp = num[j + 1];num[j + 1] = num[j];num[j] = temp;}}}
【C语言排序问题】|区分选择排序以及起泡排序相关推荐
- java冒泡排序算法代码降序_冒泡排序(起泡排序)算法及其C语言实现
起泡排序,别名"冒泡排序",该算法的核心思想是将无序表中的所有记录,通过两两比较关键字,得出升序序列或者降序序列. 例如,对无序表{49,38,65,97,76,13,27,49} ...
- C语言Selection Sort选择排序的算法(附完整源码)
C语言Selection Sort选择排序的算法 C语言Selection Sort选择排序的算法完整源码(定义,实现) C语言Selection Sort选择排序的算法完整源码(定义,实现) #if ...
- C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)
参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- C语言冒泡法和选择排序法
C语言冒泡法和选择排序法 1.冒泡法代码 #include<stdio.h> int main() {int a[3];int p,i,tmp;for(i=0;i<3;i++)sca ...
- 【项目】C语言实现对英文文本按字典顺序排序(1~100万+个单词,多种排序算法选择)
目录 介绍 算法代码与exe程序 基本功能 完整功能 函数总览 运行实例(10万个单词的英文文本排序) 参考文献 介绍 对含有多个单词的英文文本,选择多个排序算法,将所有单词按字典顺序排序,并实时显示 ...
- 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。
题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序.直接插入排序.简单选择排序.快速排序.希尔排序.堆排序. (2)待排序表的表长不小于100:其中的数据要用伪随机数产生程序产生:至少要 ...
- c语言选择排序法程序设计,C语言基础之选择排序算法和代码
在利用C语言进行编写程序的过程中,我们会常常通过算法及其代码来进行相关程序的编写工作.今天课课家笔者先给大家介绍C语言算法中的选择排序算法以及代码.那么到底什么是选择排序算法呢?下面由笔者慢慢道来. ...
- C语言数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插入法排序、折半法排序
文章目录 1.选择法排序 2.冒泡法排序 3.交换法排序 4.插入排序 5.折半法排序 6.五种方法比较 1.选择法排序 选择法排序是指每次选择索要排序的数组中的最小值(这里是由小到大排序,如果是由大 ...
最新文章
- android碎片调用动态碎片,Android Training - 使用碎片创建一个动态UI
- javascript简介及基本语法
- 学习Berkeley DB- 入门
- 软件定义存储的定制化怎么走?
- 在asp.net core中使用的验证框架FluentValidation
- Java学习的5个阶段,助大家步步攀升
- 期待鸿蒙是什么意思,如何看待华为将于 6月2 日举办鸿蒙发布会?你对此有哪些期待?...
- JAVA蓝桥杯: 01字串
- Json字符串转对象和转List集合操作(alibabab版本)
- el-upload进度条无效,on-progress无效问题解决方案
- [转]asp.net webform 与mvc 共享session
- WEB端后台常用Axure元件库及框架模版
- 【工控老马】三菱Q系列PLC调试及三菱触摸屏报警使用说明详解
- 最大的商业价值来自给人自由--------------解放生产力与互联网用户分析之我见
- 深入浅出网络编程TCP,UDP,Socket,Http网络编程面试题
- netty系列之:请netty再爱UDT一次
- 批量提取文件名(JPG照片等)
- excel 表格身份证校验和手机号校验 公式
- 60秒链快讯 | 我国区块链专利数量达1065件 位居全球第一;V神发表区块链方向开发功能侧重点的看法
- 银河麒麟Kylin_s10_sp2安装Oracle11g(FS)(亲测有效)