ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

冒泡排序接口推荐写法

冒泡排序接口推荐写法 #include stdint.h typedef uint8_t UINT8; typedef UINT8 (*CmpFunc)(int*, int*); // 升序比较前后 需要交换 UINT8 Ascend(int *x, int *y) { return (*x *y) ? 1 : 0; } // 降序比较前后 需要交换 UINT8 Descend(int *x, int *y) { return (*x *y) ? 1 : 0; } // 冒泡排序函数指针参数改为自定义CmpFunc void Order(int *arr, int Len, CmpFunc cmp_func) { int i, j; int temp; // 交换临时变量局部就近定义 int swap_flag; // 本轮是否交换标记 for(i 0; i Len - 1; i) { swap_flag 0; // 每轮冒泡初始化为无交换 for(j 0; j Len - i - 1; j) { // 传入相邻元素地址进行比较 if(cmp_func(arr[j], arr[j1])) { temp arr[j]; arr[j] arr[j1]; arr[j1] temp; swap_flag 1; // 标记发生交换 } } // 本轮无交换数组已有序提前退出 if(swap_flag 0) break; } }参数中增加函数指针入参调用更方便避免接口内反复修改比较
返回列表