(c语言)用冒泡排序模拟实现qsort()函数交换整数

#include<stdio.h>

int cmp(const void* x1, const void* x2)

{

return (*(int*)x1 - *(int*)x2);

}

void Swap(char* x, char* y, int width) //将两个数改为char*类型,每次只交换一个字节,直到将int*的四个字节全部交换一遍

{

int i = 0;

for (i = 0; i < width; i++)

{

char tmp = *x;

*x = *y;

*y = tmp;

x++;

y++;

}

}

sqort_moni(int* arr,int sz,int width, int (*cmp)(const void*, const void*))

{

int i,j;

for (i = 0; i < sz - 1; i++)

{

int flag = 1;

for (j = 0; j < sz - 1 - i; j++)

{

if (cmp((char*)arr + j * width, (char*)arr + (j + 1) * width )> 0) //返回值大于0,则说明x1>x2,需要顺序排列则要交换两个数

{

Swap((char*)arr + j * width, (char*)arr + (j + 1) * width, width);

flag = 0;

}

}

if (flag == 1) //如果循环一整遍之后都符合条件,则直接跳出循环

{

break;

}

}

}

int main()

{

int arr10 = {9,8,7,6,5,4,3,2,1,0};

int sz = sizeof(arr) / sizeof(arr0);

sqort_moni(arr,sz,sizeof(arr0), cmp);

for (int i = 0; i < sz; i++)

{

printf("%d ",arri);

}

return 0;

}

相关推荐
青少儿编程课堂1 小时前
威佐夫博弈(双堆取子游戏)解析
c++·python·算法·bfs·信息学竞赛
一个初入编程的小白3 小时前
数据结构:二叉树链式结构的实现
数据结构
辰烨chenye6 小时前
LeetCode Hot 100 题解 · 普通数组篇
算法·leetcode·职场和发展
hqyjzsb9 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye9 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术9 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
T1mzhou9 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
sanjiaomao33310 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息10 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
雨落在了我的手上10 小时前
Java数据结构(十一):优先级队列(堆)
数据结构