首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仅使用while循环的C语言反向冒泡排序算法

反向冒泡排序算法是一种基于比较的排序算法,它通过多次迭代比较和交换相邻元素的位置来实现排序。该算法的特点是每次迭代都将最大的元素移动到未排序部分的最前面。

以下是使用while循环的C语言反向冒泡排序算法的实现:

代码语言:txt
复制
#include <stdio.h>

void reverseBubbleSort(int arr[], int n) {
    int i, j, temp;
    i = 0;
    while (i < n - 1) {
        j = n - 1;
        while (j > i) {
            if (arr[j] > arr[j - 1]) {
                // 交换相邻元素的位置
                temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
            }
            j--;
        }
        i++;
    }
}

int main() {
    int arr[] = {5, 2, 8, 1, 3};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("原始数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    reverseBubbleSort(arr, n);

    printf("\n排序后的数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

该算法的时间复杂度为O(n^2),其中n是待排序数组的长度。它是一种简单但效率较低的排序算法,适用于小规模数据的排序。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器CVM:https://cloud.tencent.com/product/cvm
  • 云数据库MySQL:https://cloud.tencent.com/product/cdb_mysql
  • 云存储COS:https://cloud.tencent.com/product/cos
  • 人工智能平台AI Lab:https://cloud.tencent.com/product/ailab
  • 物联网平台IoT Hub:https://cloud.tencent.com/product/iothub
  • 视频直播CSS:https://cloud.tencent.com/product/css
  • 区块链服务BCS:https://cloud.tencent.com/product/bcs
  • 元宇宙服务Metaverse:https://cloud.tencent.com/product/metaverse

请注意,以上链接仅为示例,实际使用时请根据具体需求选择合适的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

冒泡排序算法C语言冒泡排序算法详解

大家好,又见面了,我是你们朋友全栈君。 冒泡排序是最简单排序方法,理解起来容易。虽然它计算步骤比较多,不是最快,但它是最基本,初学者一定要掌握。...冒泡排序原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大一个或最小一个。这个数就会从序列最右边冒出来。...以从小到大排序为例,第一轮比较后,所有数中最大那个数就会浮到最右边;第二轮比较后,所有数中第二大那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。...:\n"); while ( scanf("%d",&a[i]) && num >1) //循环向数组中存入数 { i++; num--; } printf("排列之前顺序为...因为冒泡排序有一个特点,这个程序是从小到大排序,所以第一轮排序以后,最大数就会浮到最右面;第二轮排序以后,第二大数会浮到倒数第二个位置;第三轮排序以后,第三大数会浮到倒数第三个位置……也就是说,排序多少轮

1.9K20

C语言排序算法冒泡排序

1.冒泡排序概念 冒泡排序(Bubble Sort)是一种简单排序算法,它重复地交换相邻元素,将较大元素“冒泡”到数组末尾。...2.冒泡排序图解 给定一个乱序数组7,1,9,5,2,6,4降序排列 首先要比较相邻两个元素大小,然后如果满足前一个数大于后一个数则交换 第一趟 7>1,交换得1,7,9,5,2,6,4 第二次1,7,9,5,2,6,4...最后直到变为1,7,5,2,6,4,9 第二趟 直到1,5,2,6,4,7,9 以此类推 直到六趟后整个数组变为 1,2,4,5,6,7,9 至此数组有序且降序 根据以上,我们不难发现,一个长度为n数组...7,1,9,5,2,6,4 }; int sz = sizeof(arr) / sizeof(arr[0]); bubblesort(arr, sz); printarr(arr, sz); } 运行结果 4.冒泡排序代码改进...当我给到一个数组9,0,1,2,3,4,5时我们可以发现其实循环只用走一趟,数组就能有序,大大减少运行时间,所以我们可以先让循环走一次把9放到最后,然后再走一次判断此时数组是否有序 代码示例 ​ ​

1K10
  • C语言排序算法冒泡排序

    冒泡排序(Bubble Sort):是一种简单排序算法。它重复地走访过要排序数列,一次比较两个元素,如果他们顺序错误就把他们交换过来。...走访数列工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法名字由来是因为越小元素会经由交换慢慢“浮”到数列顶端。(维基百科) 冒泡排序算法运作如下: 比较相邻元素。...对每一对相邻元素作同样工作,从开始第一对到结尾最后一对。这步做完后,最后元素会是最大数。 针对所有的元素重复以上步骤,除了最后一个。...持续每次对越来越少元素重复上面的步骤,直到没有任何一对数字需要比较。

    2K10

    C语言冒泡排序实现

    冒泡排序 这次给大家分享一个C语言实现冒泡排序冒泡排序其实就是设计一个冒泡排序函数将一个整型数组从小到大排序....例如一个数组arr[10] = {1,5,2,3,6,7,9,8,4,10},要想数组从小到大排序,就要让数组里面每两个相邻元素比较,所以我们需要写一个循环进行两两比较;而这个过程又需要循环sz -...1次(sz为数组元素个数),即冒泡趟数,让这个比较过程从头开始....int flag = 1; //每一趟冒泡排序--确定比较次数 int j = 0; for (j = 0; j < sz - 1 - i; j++)...;每当进入if条件就代表本趟排序数据不完全有序,所以会将flag = 0;当某一趟数组已经有序,就不会进入if条件,即本趟数组已经有序,跳出循环,在某个程度上也提高了代码效率.

    13410

    图解C语言冒泡排序算法,含代码分析

    冒泡排序算法原理 比较相邻元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样工作,从开始第一对到结尾最后一对。在这一点,最后元素应该会是最大数。...代码实现 /** * Created by 冲哥 on 2020.11.28 * 微信关注公众号【C语言中文社区】,免费领取200G精品学习资料 */ #include int...{12, 43, 23, 13, 65, 17, 98, 45, 67, 88}; len = (int)sizeof(data) / sizeof(*data); printf("使用冒泡排序原始数据是...printf("%3d", data[i]); } printf("\n"); result = bubble_sort(data, len); printf("使用冒泡排序数据是...98 使用冒泡排序数据是: 12 13 17 23 43 45 65 67 88 98 图解冒泡排序 使用冒泡排序原始数据是:12 43 23 13 65 17 98 45 67 88 在这里只分析下一次循环过程

    61920

    图解C语言冒泡排序算法,含代码分析

    冒泡排序算法原理 比较相邻元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样工作,从开始第一对到结尾最后一对。在这一点,最后元素应该会是最大数。...代码实现 /** * Created by 冲哥 on 2020.11.28 * 微信关注公众号【C语言中文社区】,免费领取200G精品学习资料 */ #include int...{12, 43, 23, 13, 65, 17, 98, 45, 67, 88}; len = (int)sizeof(data) / sizeof(*data); printf("使用冒泡排序原始数据是...printf("%3d", data[i]); } printf("\n"); result = bubble_sort(data, len); printf("使用冒泡排序数据是...98 使用冒泡排序数据是: 12 13 17 23 43 45 65 67 88 98 图解冒泡排序 使用冒泡排序原始数据是: 12 43 23 13 65 17 98 45 67 88 在这里只分析下一次循环过程

    82122

    【精通C语言】:深入解析C语言while循环

    前言 在C语言编程中,循环结构是非常重要,它可以让程序反复执行某段代码,实现重复性任务。而while循环作为一种常见循环结构,在实际开发中经常被使用。...一、while循环 由于我们需要程序帮我循环往复干一件事情,我们需要怎么来写呢? 1.1语法 C语言中引入了 while 语句,可以实现循环。...然后进入while循环,条件是i小于等于10。在循环体内部,使用printf函数打印出i值,然后将i值加1。循环会一直执行直到i值大于10,当i大于10时候,while循环就会终止。...如果i不等于5,则使用printf函数打印出i值,然后将i值加1。循环会一直执行直到i值等于5,此时跳出while循环。...进行下一次循环入口判断。 ️全篇总结 本文深入了解了C语言while循环语法结构和执行过程,以及break和continue关键字作用。

    45510

    C语言实例:使用指针实现冒泡排序

    近期热门学习C语言编程看这篇就够了,信息量很大,建议收藏【置顶】十大排序算法,来这看看-基本思想+动画演示+C语言实现【置顶】 一个好玩小游戏(纯C语言编写)【置顶】C语言基础——短短几分钟就让你了解数据是怎样在内存中存储...【置顶】 C语言实现将人员信息写入磁盘文件并读出显示【置顶】 c语言学生信息管理系统(基于文件、链表)【必读】 一文搞懂C语言对文件操作 | 经典【必读】 23种设计模式通俗解释,看完秒懂【必读】...10分钟,快速掌握C语言指针【必读】 17 张程序员壁纸(使用频率很高)【必读】 冒泡排序原理:图解C语言冒泡排序算法,含代码分析 实例代码 // // Created by 冲哥 on 2021/3/...4. // 微信关注公众号C语言中文社区,免费领取200G学习资料 // C语言实例:使用指针实现冒泡排序 // #include #define N 50 //数组元素最大个数...50\n"); scanf("%d",&num); printf("请输入要排序数组:\n"); for (int i = 0; i < num; i++) {

    40620

    C 语言作业 - 1- 指针使用冒泡排序

    上周四 Programming 课程布置了一个作业,要求如下: Write a C module for sorting string pointer array....大致意思就是对一个字符数组进行排序;比较方法有两种,一种是基于 ASCII 码大小,一个是基于整数值大小;最后用冒泡排序来测试这两种比较方法。 真的是,时隔很久又重新捡起 C 语言啊。...charstrcmp() 该函数是基于 ASCII 码来比较字符串。一般字符串比较都是基于这种方法,先比较首字母 ASCII 码大小,如果首字母相同再比较第二个字母,以此类推。...else if(s[i] < t[i]) { return -sign; } i++; } return 0; } bubble_sort() 该函数是实现基于前两个比较方法冒泡排序...关于冒泡排序就不多说了,直接看下面代码: /* funciton swap(): swap two pointers */ void swap(char **s, char **t) {

    69140

    C语言——for循环while循环效率区别——类似哨兵思想

    i8id; int size=0; int i=0; size = sizeof(Device_ID_Table)/sizeof(Device_ID_Table[0]); while...} //如果i未达到size-1,会自动退出while循环 } i8id = i; return i8id; } int ID_Conv(int u16device_cfg_num...if(i == size) { //如果已经遍历完毕,仍未找到,则返回-1 i8id = -1; } return i8id; } 在for循环中每次循环都需要对i进行是否越界判断...,而while循环查找只要对比一次即可,避免了查找过程中每次比较后都要判断查找位置是否越界小技巧,看似与原先差别不大,但是总数据较多时,效率提高很明显,是非常好编程技巧。...当然,“哨兵”也不一定在数组开始,也可以在数组末端甚至是任何位置。

    1.4K20

    【初学者入门C语言】之算法篇(冒泡排序和选择排序

    个人主页:天寒雨落博客_CSDN博客-C,CSDN竞赛,python领域博主 刷题网站:一款立志于C语言题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com)  特别标注:...该博主将长期更新c语言内容,初学c语言友友们,订阅我《初学者入门C语言》专栏,关注博主不迷路!...目录 一、冒泡排序 1.原理 2.举例         1.题目          2.代码         3.执行结果 二、选择排序 1.原理 2.举例 1.题目 2.代码 3.运行结果 ----...一、冒泡排序 1.原理         它从头到尾每次都对相邻两个数进行比较,将较大(或较小)数交换到后一个元素中,每一轮比较都在没有排好数据中,找出最大数(或最小数)放在这些数后面。...for循环三个表达式,我们已经把第一个赋给max,所以就直接从第二个开始,也就是从索引1开始,i小于10 2.举例 1.题目 输入10个数对其进行排序 2.代码 #include "stdio.h

    32050

    C 语言 switch 语句和 while 循环详解

    C 语言 switch 语句 替代多重 if..else 语句,可以使用 switch 语句。...语言 while 循环 循环 循环可以执行一段代码,只要满足指定条件。...while 循环 只要指定条件为真,while 循环就会一直循环执行一段代码块: 语法: while (条件) { // 要执行代码块 } 在下面的示例中,只要一个变量 (i) 小于 5,循环代码就会一遍又一遍地运行...do/while 循环 do/while 循环while 循环一个变体。这个循环会在检查条件是否为真之前先执行一次代码块,然后只要条件为真,就会重复该循环。...语法: do { // 要执行代码块 } while (条件); 下面的示例使用了一个 do/while 循环

    28000

    C语言探索:冒泡排序实现与解读

    摘要: 冒泡排序是一种简单且常见排序算法,通过重复遍历待排序序列,比较相邻元素并交换它们位置,从而使较大(或较小)元素逐渐从序列前端移动到后端。...本文将详细介绍如何用C语言实现冒泡排序,并通过代码示例进行解读。 正文: 一、冒泡排序原理与步骤 冒泡排序基本思想是将相邻元素两两比较,如果前一个元素大于后一个元素,则交换它们位置。...如果前一个元素大于后一个元素,交换它们位置。 3. 继续遍历序列,直到序列末尾。 4. 重复步骤1至3,直到整个序列有序。 二、用C语言实现冒泡排序 为了实现冒泡排序,我们可以编写一个C程序。...运行这段代码,你将会看到排序数组输出: 排序数组: 11 12 22 25 34 64 90 总结: 通过本文,我们了解了冒泡排序原理与步骤,并使用C语言编写程序实现了冒泡排序。...希望这篇文章能帮助你更好地理解冒泡排序算法,并掌握解决类似问题方法。

    9610

    C语言 排序算法_C语言中三大经典排序算法

    4.1归并排序递归版本 4.2归并排序非递归版本 总结 ---- 前言 常见排序算法如下: 一、插入排序 1.1直接插入排序 基本思想:把待排序记录按其关键码值大小逐个插入到一个已经排好序有序序列中...: 元素集合越接近有序,直接插入排序算法时间效率越高 时间复杂度:O(N^2) 空间复杂度:O(1),它是一种稳定排序算法 稳定性:稳定 1.2希尔排序 希尔排序法又称缩小增量法。...flag)//优化 { break; } } } 冒泡排序特性总结: 冒泡排序是一种非常容易理解排序 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:稳定 3.2快速排序 快速排序是Hoare...(非递归) 主要通过数据结构栈来模拟实现类似于二叉树前序遍历 如果有同学对C语言实现栈不熟悉可以点一下链接:C源实现数据结构栈 具体代码如下: typedef int STDataType; typedef...归并排序(MERGE-SORT)是建立在归并操作上一种有效排序算法,该算法是采用分治法(Divide andConquer)一个非常典型应用。

    2.7K20

    C语言练习之实现对整型数组冒泡排序

    前言 实现一个对整形数组冒泡排序 一、思路 这个程序用到两个循环: ①外循环控制排序套数 ②内循环控制排序过程 排序:判断相邻两个数,如果前一个数大于后一个数就将两个数位置调换,直到每个数到达该到位置...源代码: #define _CRT_SECURE_NO_WARNINGS #include //实现一个对整形数组冒泡排序 //用到两个循环 //外循环控制排序套数 //内循环控制排序过程...sizeof(arr) / sizeof(arr[0]); for (j = 0; j < sz; j++) { for (i = 0; i < sz - 1 - j; i++)//用sz-1是因为下方使用到...,本文简单介绍了用C语言实现一个对整形数组冒泡排序思路,还进一步展示了代码运行结果验证了作者思路。...本文作者也只是一个正在学习C语言等编程知识萌新,若这篇文章中有哪些不正确内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言萌新和作者进行交流。

    43510

    c语言:输入任意10个正整数,按照升序排序输出:(冒泡算法

    C语言永远不会过时 其实学编程关键是学习其思想,如果你精通了一门,再去学其他时候也很容易上手。C不会过时,尤其是在unix、linux操作平台上,学好C是必须。...CC++在很多方面也是兼容cc++基础。 再者c能从很大程度上帮你了解计算机发展史,数据结构等方面的知识,很多软件、甚至操作系统中很大部分是用c来实现。...还有一些电器芯片程序,比如电冰箱内制冷系统……可以说用c可以解决一切可能遇到问题,关键是你要能精通它。...所以放开手脚去大胆学吧,c永远不会过时 小编给大家推荐一个学习氛围超好地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作加入。...10个正整数:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(m=0;m<9;m++) /*进行9次循环 实现9趟比较*/ for

    11.4K01

    转:冒泡排序算法C#、C++和JAVA代码区别

    冒泡排序算法C#、C++和Java代码基本结构是相同,但是由于语言本身差异,在细节上可能会有所不同。例如,C++代码可能使用指针来操作数组,而C#和Java代码则可能使用索引来访问数组。...在语法上,C#和Java代码可能更相似,而C++可能更像C语言。...C#冒泡排序算法代码:  using System;  class Program  {      static void Main(string[] args)      {          int...+冒泡排序算法代码:  #include   using namespace std;  int main()  {      int arr[] = {3, 1, 4, 1, 5,...      for (int i = 0; i < n; i++)      {          cout << arr[i] << " ";      }      return 0;  }Java冒泡排序算法代码

    15830

    c语言】qsort函数及泛型冒泡排序模拟实现

    2.qsort函数 在了解了回调函数概念后,我们来学习一下qsort函数。qsort函数是c语言标准库下一个函数,它作用是对任意类型数据进行排序。...当使用void*类型指针时,它是无法直接进行解引用操作,需要将其强制类型转换为其他类型指针,才能确定访问字节数,从而继续使用。...二、泛型冒泡排序模拟实现 接下来,我们基于能够排序任意类型数据qsort函数,模拟实现一个冒泡排序,能够排序任意类型数据。...为了便于大家理解这里交换过程,我们画图演示一下: 3.冒泡排序编写 冒泡排序编写大体和原本冒泡排序相同,但是有些细节需要处理: void bubble_sort(void* base...总结 今天我们学习了qsort函数及泛型冒泡排序模拟实现,由此可以看出泛型编程好处。之后博主会和大家介绍一些c语言常见字符串函数,并且模拟实现。

    10310

    C语言重要算法之一——冒泡排序详解(干货满满,欢迎各位朋友观看)

    前言: 正如我标题所言,冒泡排序C语言中比较重要算法之一(还有快速排序等等许多【排序方法,现在先讲冒泡排序)锕,大家一定要掌握好冒牌排序算法实现,这个是C语言中比较重要一个部分,下面不多废话直接进入正题...: 正文: 1.冒泡排序实现逻辑 在讲述冒泡排序逻辑之前,可能有些读者朋友并不知道冒牌排序是干什么,我在这里简单说一下,冒牌排序就是一个对你所选择数组进行升序排序,假如你想要个升序数组,那么冒泡排序是一个可以帮助你不错算法...2.冒泡排序代码实现 首先我们需要先输入数组内容,接下来我将会用10个元素数组为例·,可以先往里面输入十个数,下面是代码实现: int arr[10] = {0} int i = 0; for(...答案是肯定,下面来进入代码优化过程: 3.冒泡排序优化: 我们在前文已经说了,此代码缺点是循环次数是固定,所以我们可以设置一个flag变量,我们可以通过它改变来判断两者是否需要再次进行外部循环...,因为今天课程比较多,小编目前是大一学生,所以我特定写了一篇比较短干货满满博客,希望读者朋友们要好好掌握冒泡排序使用,还是那句话,如果文章有错误的话,请您在评论区指出,希望大家多多点赞,那么我们下一篇见啦

    6010
    领券