C语言每日练习之冒泡排序

目录
  • 分析
  • 代码实现
  • 运行结果
  • 总结

分析

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

冒泡排序(这里只讨论从小到大排序)可以通过二种方式实现,分别是将最小值依次移动到头部和将最大值依次移动到尾部。

代码实现

代码采用从数组头部轮询的方式:

#include <stdio.h>
#define INTEGER_RANGE 10  //数字范围
void bubule_sort(int *array, int len);

int main()
{
    int i = 0;
    int array[INTEGER_RANGE] = {0};
    printf("请输入10个数\n");
    for(i = 0; i < INTEGER_RANGE; i++)
        scanf("%d", array + i);
    bubule_sort(array, INTEGER_RANGE);
    printf("排序后:\n");
    for(i = 0; i < INTEGER_RANGE; i++)
        printf("%d ", array[i]);
    printf("\n");
    return 0;
}
/**
 * @brief 冒泡排序
 * @param array:数组 len:数组长度
 * @return 空
 */
void bubule_sort(int *array, int len)
{
    int i = 0;
    int j = 0;
    int tmp = 0;
    for(i = 0; i < len - 1; i++)
    {
        for(j = 0; j < len -1 - i; j++)
        {
            if(array[j] > array[j + 1])
            {
                tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
            }
        }
    }
}

运行结果

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言实现各种排序算法实例代码(选择,冒泡,插入,归并,希尔,快排,堆排序,计数)

    目录 前言 选择排序 冒泡排序 插入排序 归并排序 希尔排序 快速排序 堆排序 计数排序 总结 前言 平时用惯了高级语言高级工具高级算法,难免对一些基础算法感到生疏.但最基础的排序算法中实则蕴含着相当丰富的优化思维,熟练运用可起到举一反三之功效. 选择排序 选择排序几乎是最无脑的一种排序算法,通过遍历一次数组,选出其中最大(小)的值放在新数组的第一位:再从数组中剩下的数里选出最大(小)的,放到第二位,依次类推. 算法步骤 设数组有n个元素,{ a 0 , a 1 , - , a n } 从数组第

  • 深入了解C语言冒泡排序优解

    目录 1:直接冒泡 2:函数冒泡 3:冒泡优化 总结: 1:直接冒泡 #include<stdio.h> int main() { int i,j; int t; int a[]={10,9,8,7,6,5,4,3,2,1};//此排序实现顺序排序 int s=sizeof(a)/sizeof(a[0]);//求数组元素个数 for(i=0;i<s-1;i++)//确定排序的趟数 { //下面为每趟冒泡排序 for(j=0;j<s-1-i;j++) { if(a[j]>a[j

  • C语言实现冒泡排序的思路以及过程

    目录 C语言实现<冒泡排序> 整体思路 代码实现 C语言实现<冒泡排序> 你们好!我是飞人!此篇文章是我进入IT行业第一篇博客,若有不妥之处,欢迎指点. 此篇讲解冒泡排序的原理,以及如何用C语言去实现.希望能够给各位读者带来一定的认识. 整体思路 例子:以一个整形数组为例 int arr[10]={1,2,3,4,5,6,7,8,9,10}; 我们如何进行"降序"的排序方式?? 确定躺数 总共需要排序10个数,而当我们实际去进行安排怎么去比较大小时,总共只组合了

  • C语言冒泡排序法的实现(升序排序法)

    任务代码: 数字的排序: #include <stdio.h> #define SIZE 10 int main() { int a[SIZE]={12 ,43,9,13,67,98,101,89,3,35};//十个数的无序数列 int i,j,t; printf("此程序使用冒泡排序法排列无序数列!\n"); //冒泡排序 for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次 { for(j=0;j<10-i-1;j++)//每一趟扫描到a

  • C语言排序方法(冒泡,选择,插入,归并,快速)

    目录 1.冒泡排序 2.选择排序 3.插入排序 4.归并排序 5.快速排序 总结 1.冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成. 算法步骤 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重

  • C语言对数组元素进行冒泡排序的实现

    在实际开发中,有很多场景需要我们将数组元素按照从大到小(或者从小到大)的顺序排列,这样在查阅数据时会更加直观,例如: 一个保存了班级学号的数组,排序后更容易分区好学生和坏学生: 一个保存了商品单价的数组,排序后更容易看出它们的性价比. 对数组元素进行排序的方法有很多种,比如冒泡排序.归并排序.选择排序.插入排序.快速排序等,其中最经典最需要掌握的是「冒泡排序」. 以从小到大排序为例,冒泡排序的整体思想是这样的: 从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素

  • C语言每日练习之冒泡排序

    目录 分析 代码实现 运行结果 总结 分析 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 冒泡排序(这里只讨论从小到大排序)可以通过二种方式实现,分别是将最小值依次移动到头部和将最大值依次移动到尾部. 代码实现 代码采用从数组头部轮询的方式: #include <stdio.h> #define INTEGER_RANGE 10 //数字范围 void bubule_sort(int *array, int len); int main() { int i =

  • C语言排序算法之冒泡排序实现方法【改进版】

    本文实例讲述了C语言排序算法之冒泡排序实现方法.分享给大家供大家参考,具体如下: 冒泡排序和改进的冒泡排序 /*------------------------------------------------------------------------------------------- Bubble_sort.h 冒泡排序: 时间复杂度为O(N^2) 改进的冒泡排序: 时间复杂度仍为O(N^2) 一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序 设置了一个哨兵fla

  • C语言每日练习之统计文本单词数及高频词

    作业1:统计出txt文本里面的单词数,并找出频率出现最高的单词是哪个? 运行结果: 上代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //文件打开 //string file = System.IO.Fi

  • C语言每日练习之动态显示系统时间

    目录 分析 代码实现 1.简易版 2.自定义格式版 3.格式化输出版 4.精细版(毫秒+微秒) 网上参考 总结 分析 C语言的时间库函数基本都在time.h里,该头文件主要包含三种形式的时间量,一种是time_t类型(原型为long),表示当前时间到1970年1月1日的总秒数:一种是struct tm类型,里面是时间日期的数据:还有一种clock_t,这个类型本文用不到,它表示与处理器时钟有关的时间数据. 本文将介绍4种显示系统时间的方法: 第一种直接用ctime函数将time_t类型的秒数据转

  • C语言每日练习之进制转换

    目录 分析 代码实现 网上参考 总结 分析 我一开始的想法是通过输入整数形式八进制来转换成十进制输出,后来发现用字符数组输入更方便.我这里就讲讲我用整型数据输入的转换思路: 我们都知道二进制由0和1组成,3位二进制组成在一起,就可以表示0-7这八个数,所以八进制实际上就是3位二进制的组合(同理十六进制是4位二进制的组合),C语言的位运算操作的是二进制,算术运算针对的是十进制,所以,我们可以通过位运算求出八进制的每一位数(3位二进制为1位),然后通过算术运算符+,将他们加起来.和十进制运算不同的地

  • C语言每日练习之二叉堆

    目录 一.堆的概念 1.概述 2.定义 3.性质 4.作用 二.堆的存储结构 1.根结点编号 2.孩子结点编号 3.父结点编号 4.数据域 5.堆的数据结构 三.堆的常用接口 1.元素比较 2.交换元素 3.空判定 4.满判定 5.上浮操作 6.下沉操作 四.堆的创建 1.算法描述 2.动画演示 3.源码详解 五.堆元素的插入 1.算法描述 2.动画演示 3.源码详解 五.堆元素的删除 1.算法描述 2.动画演示 3.源码详解 总结 一.堆的概念 1.概述 堆是计算机科学中一类特殊的数据结构的统

  • C语言每日练习之字符串反转

    目录 分析 代码实现 网上参考 总结 分析 在第18天:利用递归函数调用方式,将所输入的字符以相反顺序打印出来中,已经用过递归实现字符顺序输入,逆序输出,今天的题目是字符串反转,将以字符数组的形式来进行操作. 代码实现 #include <stdio.h> #include <string.h> #define MAX_LENGTH 50 //最大长度 char *String_Invertion(char *str); int main() { char string[MAX_L

  • C语言每日练习之求两个矩阵的乘积详解

    目录 分析 代码实现 总结 分析 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中. 矩阵的乘法有以下注意事项: 1.当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘. 2.矩阵C的行数等于矩阵A的行数,C的列数等于B的列数. 3.乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和. 代码实现:只需要用矩阵乘积的公式求出新的矩阵,即为两个矩阵的乘积,程序中

  • C语言每日练习之乒乓球比赛问题

    目录 题目描述 分析 代码实现 后期完善 网上参考 解法一: 解法二: 总结 题目描述 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单 分析 简单的组合问题,而且不考虑排序,如果固定a,b,c分别在0-2三个比赛队伍,那么两球队最多3种组合方式,全部轮询一遍即可. 代码实现 代码写的有点糟 #include <stdio.h> int main() { in

  • C语言每日练习之选择排序

    目录 分析 代码实现 总结 分析 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾.以此类推,直到全部待排序的数据元素的个数为零.选择排序是不稳定的排序方法.--百度百科 代码实现 #include <stdio.h> #define INTEGER_RANGE 10 //数字范围 void select_so

随机推荐