(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 arr[10] = {9,8,7,6,5,4,3,2,1,0};

int sz = sizeof(arr) / sizeof(arr[0]);

sqort_moni(arr,sz,sizeof(arr[0]), cmp);

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

{

printf("%d ",arr[i]);

}

return 0;

}

相关推荐
Mxsoft61917 分钟前
AR远程定位偏差救场!某次现场故障,SLAM算法精准对齐设备模型!
算法·ar
liu****23 分钟前
一.脚手架介绍以及部分工具使用
开发语言·数据结构·c++·手脚架开发
Hello娃的29 分钟前
【量子力学】Hohenberg-Kohn 定理
人工智能·算法
老马啸西风36 分钟前
成熟企业级技术平台 MVE-010-IGA(Identity Governance & Administration,身份治理与管理)平台
人工智能·深度学习·算法·职场和发展
老马啸西风1 小时前
成熟企业级技术平台 MVE-010-app 管理平台
人工智能·深度学习·算法·职场和发展
lzh_200110121 小时前
树状数组理解
算法
R-G-B1 小时前
哈希表(hashtable),哈希理论,数组实现哈希结构 (C语言),散列理论 (拉链发、链接发),散列实现哈希结构,c++ 实现哈希
c语言·哈希算法·散列表·哈希表·数组实现哈希结构·散列实现哈希结构·c++ 实现哈希
历程里程碑1 小时前
C++ 6 :string类:高效处理字符串的秘密
c语言·开发语言·数据结构·c++·笔记·算法·排序算法
蓝色汪洋1 小时前
luogu迷宫寻路
算法