目录🍒🍒:
排序的分类:🦄
冒泡排序的思想🎊
🌠该如何去实现冒泡排序
该如何利用qsort来实现排序🌈
🍭🍭🍭🍇🍭🍭🍭🍇🍭🍭🍭🍇🍭🍭
🌸排序的分类:
第一种是冒泡排序,另一种则为利用qsort来实现排序。不同点:冒泡排序,由我们来实现排序,qsort函数则是自动实现排序🍰
冒泡排序的思想: 两两相邻的相邻元素进行比较,并且有可能进行元素交换。
例如在一组: 9876543210中,我要将这组数排成升序。那么此时我们将9和8进行比较,并且交换。此时我们会得到8976543210。再将9和7比较并交换。此时会得到8796543210,一直重复比较和交换的动作,最终会得到8765432109。
在这组数用有10个元素,但只需要九次比较。原因:不需要和本身进行。所以当数组有n个元素 时只需要进行n-1次比较交换即可。在将9排在数组最后,是我们完成的一趟排序,那么完成数组所有元素的排序需要多少趟呢?以上面数组为例,数组有十个元素,但进行升序排序只需要进行九次。是因为来到最后一个元素0时已经不需要排序了。🎆
以题目为例:
#inclide<stdio.h>
int main ()
{
int n = 0;
scanf("%d",&n);
int arr[40] = {0};
int i = 0;
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<n-1;i++)//确定趟数
//自己实现排序-冒泡排序
{
int j = 0;//确定每个元素需要进行比较次 // 数
for(j=0;j<n-1-i;j++)
{
if(arr[j] >arr[j+1])//假设是升序
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmpm;
}
}
}
//排成升序,最后五个元素就是前五的成绩
for(i=n-1;i>=n-5;i++)
{
printf("%d",arr[i]);
}
return 0;
}
此时我们利用冒泡排序来解决前五名学生的成绩的问题。冒泡排序,是我们自己来实现排序。还有一种qsort函数,自动实现排序。💜💙💚
对于qsort,我们比较陌生,此时打开MSDN来进行查找
qsort是进行快速 排序的一个函数
qsort的参数包括:目标数组的开始开始,待排序的数组个数,一个元素的大小,比较函数
qsort(arr, n,4,com_int),在main函数之前定义一个比较函数
比较函数有其返回值
在使用qsort函数时要引用其头文件stdilb.h🍒
以上就是我们今天的内容,排序的分类及不同,冒泡排序的思想,利用冒泡排序来实现升序,利用qsort函数来实现升序🍥。
创作不易,还望各位看官老爷点点关注点点赞😘😘😘😘