数据结构与算法 排序(冒泡,选择,插入)

发布时间 - 2026-01-11 02:28:08    点击率:

数据结构与算法 排序(冒泡,选择,插入)

1.冒泡排序

1.1算法

冒泡排序(buddle-sort)算法的运作如下:(从后往前)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

1.2 实现

// 
// main.c 
// BubbleSort 
// 
// Created by Wuyixin on 2017/6/2. 
// Copyright © 2017年 Coding365. All rights reserved. 
// 
 
#include <stdio.h> 
 
void bubbleSort(int a[],int n){ 
  int i,j; 
  for (i = 0; i < n - 1; i++) { 
    for (j = 0; j < n - i; j++) { 
      if (a[j] > a[j + 1]){ 
        int temp = a[j]; 
        a[j] = a[j + 1]; 
        a[j + 1] = temp; 
      } 
    } 
  } 
} 
 
int main(int argc, const char * argv[]) { 
   
   
  int a[] = {9,3,1,4,7,6,5,8,2}; 
  bubbleSort(a, 9); 
  int i = 0; 
  while (i < 9) 
    printf("%d ",a[i++]); 
   
  return 0; 
} 

2.选择排序

2.1 算法

选择排序(selection-sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完

2.2实现

// 
// main.c 
// SelectionSort 
// 
// Created by Wuyixin on 2017/6/2. 
// Copyright © 2017年 Coding365. All rights reserved. 
// 
 
#include <stdio.h> 
 
void selectionSort(int a[],int n){ 
  int i,j,min,temp; 
   
  for (i = 0; i < n; i++) { 
    min = i; 
    for (j = i + 1; j < n; j++) { 
      if (a[j] < a[min]) 
        min = j; 
    } 
    if (i != min){ 
      temp = a[i]; 
      a[i] = a[min]; 
      a[min] = temp; 
    } 
  } 
} 
 
int main(int argc, const char * argv[]) { 
  int a[] = {9,3,1,4,7,6,5,8,2}; 
  selectionSort(a, 9); 
  int i = 0; 
  while (i < 9) 
    printf("%d ",a[i++]); 
  return 0; 
} 



3.插入排序

3.1 算法

插入排序(insertion-sort)的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

3.2 实现

// 
// main.c 
// InsertionSort 
// 
// Created by Wuyixin on 2017/6/2. 
// Copyright © 2017年 Coding365. All rights reserved. 
// 
 
#include <stdio.h> 
 
void insertionSort(int a[],int n){ 
  int i,j,temp; 
  for (i = 1; i < n ; i++) { 
    temp = a[i]; 
    for (j = i; j > 0 && temp < a[j - 1]; j--) { 
      a[j] = a[j - 1]; 
    } 
    a[j] = temp; 
  } 
} 
 
int main(int argc, const char * argv[]) { 
  int a[] = {9,3,1,4,7,6,5,8,2}; 
  insertionSort(a, 9); 
  int i = 0; 
  while (i < 9) 
    printf("%d ",a[i++]); 
  return 0; 
} 

以上就是对C语言数据结构与算法中排序的讲解,大家如有疑问可以留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 数据结构与算法  # 排序(冒泡  # 选择  # 插入)  # 排序算法  # C++ 数据结构 堆排序的实现  # java数据结构排序算法之归并排序详解  # C语言中数据结构之链表归并排序实例代码  # C语言 数据结构堆排序顺序存储(升序)  # C语言数据结构 链表与归并排序实例详解  # 数据结构  # 是一种  # 放在  # 第一个  # 在这  # 如有  # 没有任何  # 希望能  # 第二个  # 谢谢大家  # 工作原理  # 越少  # 按其  # 对越  # Wuyixin  # BubbleSort  # main  # Created  # rights  # copy 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: linux top下的 minerd 木马清除方法  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  用yum安装MySQLdb模块的步骤方法  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  晋江文学城电脑版官网 晋江文学城网页版直接进入  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  android nfc常用标签读取总结  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何解决hover在ie6中的兼容性问题  Android实现代码画虚线边框背景效果  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  javascript读取文本节点方法小结  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  ,交易猫的商品怎么发布到网站上去?  Python文件流缓冲机制_IO性能解析【教程】  网站制作软件有哪些,制图软件有哪些?  如何在Windows服务器上快速搭建网站?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  javascript基本数据类型及类型检测常用方法小结  如何在局域网内绑定自建网站域名?  如何在IIS服务器上快速部署高效网站?  js代码实现下拉菜单【推荐】  php结合redis实现高并发下的抢购、秒杀功能的实例  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel如何发送系统通知?(Notification渠道示例)  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Swift中循环语句中的转移语句 break 和 continue  网站制作企业,网站的banner和导航栏是指什么?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  网页设计与网站制作内容,怎样注册网站?  如何有效防御Web建站篡改攻击?  微信小程序 input输入框控件详解及实例(多种示例)  JS碰撞运动实现方法详解  如何在建站主机中优化服务器配置?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  php 三元运算符实例详细介绍  Linux安全能力提升路径_长期防护思维说明【指导】  深入理解Android中的xmlns:tools属性  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】