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


    1. #include    
    2. int cmp(const void* x1, const void* x2)
    3. {
    4.     return (*(int*)x1 - *(int*)x2);
    5. }
    6. void Swap(char* x, char* y, int width)  //将两个数改为char*类型,每次只交换一个字节,直到将int*的四个字节全部交换一遍
    7. {
    8.     int i = 0;
    9.     for (i = 0; i < width; i++)
    10.     {
    11.         char tmp = *x;
    12.         *x = *y;
    13.         *y = tmp;
    14.         x++;
    15.         y++;
    16.     }
    17. }
    18. sqort_moni(int* arr,int sz,int width, int (*cmp)(const void*, const void*))
    19. {
    20.     int i,j;
    21.     for (i = 0; i < sz - 1; i++)
    22.     {
    23.         int flag = 1;
    24.         for (j = 0; j < sz - 1 - i; j++)
    25.         {
    26.             if (cmp((char*)arr + j * width, (char*)arr + (j + 1) * width )> 0) //返回值大于0,则说明x1>x2,需要顺序排列则要交换两个数
    27.             {
    28.                 Swap((char*)arr + j * width, (char*)arr + (j + 1) * width, width);
    29.                 flag = 0;
    30.             }
    31.         }
    32.         if (flag == 1)  //如果循环一整遍之后都符合条件,则直接跳出循环
    33.         {
    34.             break;
    35.         }
    36.     }
    37. }
    38. int main()
    39. {
    40.     int arr[10] = {9,8,7,6,5,4,3,2,1,0};
    41.     int sz = sizeof(arr) / sizeof(arr[0]);
    42.     sqort_moni(arr,sz,sizeof(arr[0]), cmp);
    43.     for (int i = 0; i < sz; i++)
    44.     {
    45.         printf("%d ",arr[i]);
    46.     }
    47.     return 0;
    48. }

  • 相关阅读:
    word中图片位置问题(后续遇到问题再更新)
    这些嵌入式系统安全性的知识你需要了解
    手写map,filter函数
    Leetcode 71. 简化路径
    Java SE 17 新增特性
    SQL 语句学习总结:
    【Django】开发日报_5_Day:手机号码管理系统(2)
    文件混淆-界面介绍
    Java Web笔记 cookie
    idea自动导包操作步骤
  • 原文地址:https://blog.csdn.net/2301_79580018/article/details/133699656