我是靠谱客的博主 英俊雨,最近开发中收集的这篇文章主要介绍使用回调函数,模拟实现 qsort (采用冒泡排序法),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:

对回调函数进行简单运用;

模拟实现 qsort ;

采用冒泡排序法。

问题描述:

1、定义数组,初始化要排序的数,并打印数组;

2、调用 bubble 函数;

3、调用 int_cmp 函数进行比较两个数大小,然后调用 _swap 函数进行交换两个数的值;

4、完成排序,打印排序后数组。

源代码:

#include<stdio.h>
#include<windows.h>

static int int_cmp(void *x, void *y)
{
	return *((int *)x) > *((int *)y);
}

static void swap(void *x, void *y, int size)
{
	char *p = (char*)x;
	char *q = (char*)y;
	while (size--)
	{
		*q ^= *p;
		*p ^= *q;
		*q ^= *p;
		p++;
		q++;
	}
}

void mySort(void *arr, int count, int size, int(*cmp)(void *, void*))
{
	int i = 0;
	int j = 0;
	int flag = 0;
	for (; i<count - 1; i++)
	{
		flag = 0;
		for (j = 0; j<count - 1 - i; j++)
		{
			if (cmp((char*)arr + j*size, (char*)arr + (j + 1)*size) > 0)
			{
				flag = 1;
				swap((char*)arr + j*size, (char*)arr + (j + 1)*size, size);
			}
		}
		if (flag == 0)
		{
			return 0;
		}
	}
}

int main()
{
	int i = 0;
	int arr[] = { 3, 21, 4, 21, 23, 1, 125, 1, 0,3 };
	int size = sizeof(arr) / sizeof(arr[0]);
	mySort(arr, size, sizeof(int), int_cmp);
	for (; i <size; i++)
	{
		printf("%d  ", arr[i]);
	}
	printf("n");
	system("pause");
	return 0;
}

 

 

最后

以上就是英俊雨为你收集整理的使用回调函数,模拟实现 qsort (采用冒泡排序法)的全部内容,希望文章能够帮你解决使用回调函数,模拟实现 qsort (采用冒泡排序法)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部