首页 > 其他分享 >qsort函数

qsort函数

时间:2022-08-27 21:45:02浏览次数:55  
标签:p2 arr 函数 int void qsort char width

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(void* p1, void* p2)
{
	return *(int*)p1 - *(int*)p2;//转换成int类型指针读取4字节的数据解引用得元素用来比大小
}
void swap(char* p1, char* p2, int width)//精确到以1个字节相互交换
{
	int i = 0;
	for (i = 0; i < width; i++)
	{
		char* temp = *(p1 + i);
		*(p1 + i) = *(p2 + i);
		*(p2 + i) = temp;
	}
}
void my_qsort(void* arr, int len, int width)//void*可以接受任意类型的数据,方法用冒泡排序法
{
	int i = 0; int j = 0;
	for (i = 0; i < len; i++)
	{
		for (j = 0; j < len - 1 - i; j++)
		{
			if (cmp((char*)arr + j * width, (char*)arr + (j + 1) * width) > 0)//开始比较,因为接受的是void*类型,所以用char*类型转换在×宽度得到每个元素原始数据
			{
				swap((char*)arr + j * width, (char*)arr + (j + 1) * width, width);//交换数据,精确到以1个字节为单位的排序
			}
		}
	}
}
int main()
{
	int arr[] = { 7,6,5,4,3,2,1};
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", sz);
	my_qsort(arr,sz,sizeof(arr[0]),cmp);//排序的数组首地址,数组元素个数,元素的大小(字节),回调函数
	for (int i = 0; i < sz; printf("%d ", arr[i++]));
	return 0;
}

 

标签:p2,arr,函数,int,void,qsort,char,width
From: https://www.cnblogs.com/godex/p/16631568.html

相关文章

  • 【C标准库】详解feof函数与EOF
    创作不易,多多支持!再说此函数之前,先来说一下EOF是什么EOF,为EndOfFile的缩写,通常在文本的最后存在此字符表示资料结束。在C语言中,或更精确地说成C标准函式库中表示文件......
  • 函数的作用
    以下选项中,属于函数的作用的是(BCD)A.提高代码执行速度B.复用代码C.增强代码可读性D.降低编程复杂度答案解析:函数的作用是复用代码、增强代码可读性、降低编程复杂度,而......
  • Js 函数eval() 用法记录
    js函数eval()用法记录问题描述:遇到一串数据responseText,在浏览器中使用console函数输出responseText这个字段整体的时候,eg:console.log(“—————–responseText—-“......
  • js 函数的参数长度问题
    js函数的参数长度问题_Jamie_java的博客-CSDN博客_js传参数有长度限制 https://blog.csdn.net/baidu_27062827/article/details/52276635js函数,如果传入参数的长度太长......
  • R语言中lapply函数
     相对于apply,lapply主要应用于list??返回list?? 001、应用于数据框dat<-data.frame(a=c(6,3,5),b=c(2,6,8),c=c(5,2,1))##测试数据框datlap......
  • seurat 单细胞数据分析中 VizDimLoadings 函数
     前期处理:https://www.jianshu.com/p/fef17a1babc2#可视化对每个主成分影响比较大的基因集001、dat<-pbmc[["pca"]]@feature.loadings......
  • MySQL源码分析之SQL函数执行
    1.MySQL中执行一条SQL的总体流程2.SQL函数执行过程1.MySQL中执行一条SQL的总体流程一条包含函数的SQL语句,在mysql中会经过:客户端发送,服务器连接,语法解析,语句执行的......
  • 开始setInterval 停止clearInterval 函数
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title>setInterval使用方法</title> <styletype="text/css"> .com{ width:200px; height:30px; ......
  • seurat 单细胞数据分析中 DimPlot函数实现pca
     前期处理参考:https://www.jianshu.com/p/fef17a1babc2001、dat<-pbmc[["pca"]]@cell.embeddings##绘图数据dat[1:3,1:3]plot(dat[,1],dat[,2])......
  • sparksql 函数大全
    数学函数函数简介用法acosh反双曲余弦值SELECTacosh(0.5);0.9624236501192069SELECTacosh(3.5);1.9248473002384139asinh反双曲正弦SELECTasinh(1.45);......