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

C中指针不能正常工作的冒泡排序

冒泡排序是一种简单的排序算法,它通过多次交换相邻元素的位置来实现排序。在C语言中,使用指针进行冒泡排序时,需要注意指针的使用方式,否则可能导致指针不能正常工作。

冒泡排序的基本思想是从数组的第一个元素开始,依次比较相邻的两个元素,如果顺序不正确,则交换它们的位置,直到整个数组排序完成。

以下是一个使用指针进行冒泡排序的示例代码:

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

void bubbleSort(int *arr, int size) {
    int i, j;
    for (i = 0; i < size - 1; i++) {
        for (j = 0; j < size - i - 1; j++) {
            if (*(arr + j) > *(arr + j + 1)) {
                int temp = *(arr + j);
                *(arr + j) = *(arr + j + 1);
                *(arr + j + 1) = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 2, 8, 12, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    bubbleSort(arr, size);
    
    printf("Sorted array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

在上述代码中,我们使用了指针来访问数组元素。arr是一个指向数组首元素的指针,通过*(arr + j)的方式来访问数组中的元素。在交换元素位置时,也需要使用指针来操作。

冒泡排序的时间复杂度为O(n^2),适用于小规模的排序任务。它的优势是实现简单,代码易于理解和实现。

冒泡排序适用于各种类型的数据,但对于大规模数据的排序任务,更高效的排序算法如快速排序、归并排序等更为常用。

腾讯云提供了多种云计算相关产品,如云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多产品信息。

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

相关·内容

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 //数组元素最大个数...void bubble_sort(int *p, int num); int main(){ int arr[N]; int num; printf("请输入数组元素个数,注意元素个数不能超过

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) {

    69240

    C语言】手把手带你拿捏指针(2)(含冒泡排序

    }; test1(arr); test2(arr); return 0; } 我们来看一下运行结果: 总结:⼀维数组传参,形参部分可以写成数组形式,也可以写成指针形式 四、冒泡排序...    冒泡排序就是模拟冒泡样子,数据不同,那么泡泡大小就不同,小泡泡就会慢慢浮上去,按这个理解,冒泡排序默认是升序,今天我们写一个冒泡排序,既可以升序,也可以降序     冒泡排序原理就是比较一堆数相邻两个数...,一趟冒泡排序可以排好一个数字,那么一共有8个数字就需要7趟冒泡排序,因为如果把7个数字放在正确位置上了,那么第8个数字一定就在正确位置上 (4)所以经过分析,我们知道了我们需要进行多趟冒泡排序,一趟冒泡排序可能有多次交换...,所以我们可以写成n-i-1 (6)最后就是对数组挨着两个元素进行比较大小,我们可以设计一个if进行判断,如果第三个参数是0,那么进行升序排序,如果是1,就升序,这里用升序排序举例,如果左边大一些...0,如果没有产生交换就说明排序已经完成,就可以结束,以上就是整个冒泡排序思路 (8)代码: //冒泡排序: void Bubble_sort(int arr[], int sz, int x) {

    8810

    C语言 | 指向指针指针排序

    “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历是日积月累学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例81:C语言实现用指向指针指针方法对5个字符串排序并输出。...解题思路:读者看着道题时候,首先要知道什么时指针,指向指针指针应该怎么用,一般在开发不这样用,读者要看明白,这个很锻炼思维。...(i=0;i<5;i++) { printf("%s\n",pstr[i]); } return 0;//主函数返回值为0 } void sort(char **point)//冒泡排序算法实现

    1.7K32

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

    本文将详细介绍如何用C语言实现冒泡排序,并通过代码示例进行解读。 正文: 一、冒泡排序原理与步骤 冒泡排序基本思想是将相邻元素两两比较,如果前一个元素大于后一个元素,则交换它们位置。...如果前一个元素大于后一个元素,交换它们位置。 3. 继续遍历序列,直到序列末尾。 4. 重复步骤1至3,直到整个序列有序。 二、用C语言实现冒泡排序 为了实现冒泡排序,我们可以编写一个C程序。...每轮遍历,内层循环负责比较相邻元素,并在必要时交换它们位置。 内层循环终止条件是:当轮遍历结束后,序列最大值(或最小值)已移动到序列最后。因此,无需再比较已经有序子序列。...调用冒泡排序函数,对给定数组进行排序。 打印排序数组。...运行这段代码,你将会看到排序数组输出: 排序数组: 11 12 22 25 34 64 90 总结: 通过本文,我们了解了冒泡排序原理与步骤,并使用C语言编写程序实现了冒泡排序

    9710

    配置SSL证书后,NginxHTTPS 不能正常工作原因有哪些

    图片如果在配置SSL证书后,NginxHTTPS无法正常工作,可能有以下几个常见原因:1.错误证书路径或文件权限:确保在Nginx配置文件中指定了正确证书文件路径,并且Nginx对该文件具有读取权限...确保中间证书链也包含在证书文件,或者在Nginx配置通过ssl_trusted_certificate指令指定了正确中间证书链文件。4....端口配置错误:确认Nginx配置针对HTTPS监听端口(默认为443)与客户端请求端口匹配。5. 防火墙或网络代理设置:检查服务器上防火墙配置,确保允许入站和出站HTTPS连接。...此外,如果后面有使用网络代理,也要检查代理配置是否正确。6. 其他配置错误:检查Nginx其他相关配置,确保没有其他冲突或错误指令导致HTTPS无法正常工作。...可以查看Nginx错误日志文件以获取更多详细错误信息。排除以上可能问题,并进行适当配置修复后,可以重新启动Nginx服务,并检查HTTPS是否能够正常工作

    4.2K40

    C语言 | 用指向指针指针对n个整数排序

    例82:C语言用指向指针指针方法对n个整数排序并输出;要求将排序单独写成一个函数;n个整数在主函数输入,最后在主函数输出。...解题思路:读者看着道题时候,首先要观察一下有什么规律,然后指向指针指针在上一道练习题中已经有了铺垫,读者可以联系上一道题去熟练使用指向指针指针。...C语言源代码演示: #include//头文件  int main()//主函数  {   void sort(int **point,int number); //sort排序函数声明...,&number);//键盘输入    for(i=0;i<number;i++)   {     pstr[i]=&data[i]; //将第i个整数地址赋予指针数组pstr第i个元素    }...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去动力,跪谢各位父老乡亲啦~ C语言学习路线     C语言开发工具 更多案例可以go公众号:C语言入门到精通

    1.5K22

    C++】C++ 类 this 指针用法 ① ( C++ 类 this 指针引入 | this 指针用法 | 代码示例 )

    一、C++ 类 this 指针 1、C++ 类 this 指针引入 在 C++ 类 , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在类每个 非静态成员函数... , 都可以调用 this 指针 ; this 指针 是指向 调用对象 自身 指针 , 也就是调用 该成员函数 实例对象 内存地址 ; 由于 this 指针只能在 非静态成员函数内部使用..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ 类...this 指针用法 C++ 类 this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 在 非静态成员函数 , 直接使用如下语法 , 访问 本实例对象 非静态成员变量 ; 先获取指针指向数据 然后访问数据成员变量 ; (*this).成员变量名 在 C++

    31520

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

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

    43610

    转:冒泡排序算法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冒泡排序算法代码

    15930

    简单而经典:Java冒泡排序算法详解

    在本文中,我们将详细介绍Java冒泡排序冒泡排序基本原理 冒泡排序(Bubble Sort)是一种简单排序算法,它通过多次遍历待排序元素,比较相邻元素大小,并交换它们直到整个序列有序。...:[2, 3, 4, 5, 6, 7] 冒泡排序性能 冒泡排序时间复杂度是,其中n是要排序元素个数。...由于其性能较差,通常不建议在大型数据集上使用冒泡排序。然而,冒泡排序仍然有其价值: 学习排序算法:冒泡排序是理解排序算法良好起点,它实现非常简单,有助于初学者理解排序基本概念。...小型数据集:对于小型数据集,冒泡排序可能是一个合理选择,因为其实现简单且易于编写。 在Java JDK冒泡排序通常不会直接用于实际生产代码。...总结 总之,冒泡排序是一个简单而易于理解排序算法,它在学习排序算法过程具有重要作用。然而,在实际应用,Java JDK提供了更高效排序方法,推荐使用这些方法来提高性能。

    11.8K41

    C++this指针本质

    一直以来对C++this不理解,只知道在构造函数,如果构造函数参数和类成员名字一样的话,就可以用this指针来区分,如: this->a = a; 一直以来都有这个疑问:this究竟是什么?...从刚才代码,我们用”this->”而不是”this.”就说明this是一个指针,而我们知道,在CC++指针就是地址,因此很容易想到,this也是一个地址。但是问题来了,this是谁地址呢?...我们看下面这个很简单C++程序: #include class A { public: A(); }; A::A() { std::cout << "this...::endl; } int main() { A a; std::cout << "&a " << &a << std::endl; return 0; } 大家先在自己脑袋运行一下这个程序...我们可以看到,this和&a结果是一样。由此可以看出,this就是a地址,而a是类A一个对象,占用了sizeof(A)内存空间。

    75930

    浅析C++this指针

    看call 3那行C++代码汇编代码就可以看到this指针跟一般函数参数区别:一般函数参数是直接压入栈(push 0Dh),而this指针却被放到了ecx寄存器。...在类非成员函数如果要用到类成员变量,就可以通过访问ecx寄存器来得到指向对象this指针,然后再通过this指针加上成员变量偏移量来找到相应成员变量。...ret 下面对上面的汇编代码重点行进行分析: 1、将ecx寄存器值压栈,也就是把this指针压栈。...在4已经说明,eax寄存器内存放是this指针,而this指针指向连续存放int型成员变量m_iValue1。this指针加4(sizeof(int))也就是成员变量m_iValue2地址。...通过上面的分析,我们可以从底层了解了C++this指针实现方法。虽然不同编译器会使用不同处理方法,但是C++编译器必须遵守C++标准,因此对于this指针实现应该都是差不多

    75810
    领券