提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
如何对一个整形数组进行排序
前言
提示:这里可以添加本文要记录的大概内容:
本文将对冒泡排序和C语言库函数自带的数组排序进行一个简单的介绍
提示:以下是本篇文章正文内容,下面案例可供参考
一、冒泡排序的算法思想?
冒泡排序的核心是数组中相邻的两个数进行比较(按照升序),把最大的一个数在每一次比较后都放在数组的最后 ,实现数组的排列。
二、编写代码
代码如下(示例):
#include <stdio.h>
void Bubbling_sort(int arr[], int sz)
{
//首先确定几趟
int signel = 0;
int i = 0;
for (i = 0; i<sz-1; i++)
{
//一趟内排序
int j = 0;
for (j = 0; j<sz-1-i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
signel = 1;
}
}
if (signel == 0)
break;
}
}
int main()
{
int arr[10] = {0};
int sz = sizeof(arr) / sizeof(arr[0]);
for(int i = 0; i<sz;i++)
{
scanf("%d",&arr[i]);
}
Bubbling_sort(arr, sz);
for (int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
2、代码解析
(1)首先创建一个数组并在数组中存放数据
(2)编写一个冒泡排序函数 函数参数为数组首元素地址 及数组长度
(3)冒泡排序的核心思想就是首先确定要走几趟 ,只有每一次把最后一个数排在最后,那么9趟之后 ,排序就结束了 ;其次 ,一趟 ,用相邻数组两两对比的方式,把大的那个数一直往后挪,最后完成一趟的流程。完成一趟后,就会少比较最后那一个数。
(4)可以优化的地方就在于假设有一趟没有发生任何交换,说明数组已经是有序的了,这时候设置signel 就可以优化算法。
三、用C语言库函数中的qsort也可以实现快速排序
1、qsort简介
(1)函数介绍
需要引头文件 <stdlib.h>
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );
(2)函数讲解
qsort函数是不需要返回值的;
void*base 是数组的首元素地址;
size_t num 是数组长度;
size_t width 是数组中每个元素在内存中占用的字节大小;
int (*compare)是函数指针,需要创建一个函数进行两个数大小的比较,返回类型为整形,返回如果是小于0,说明后面元素大于前面元素 ,大于0则相反。(函数默认是升序排列);
2、代码
#include<stdio.h>
#include<stdlib.h>
int int_com(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
int main()
{
int arr[10] = {0};
int sz = sizeof(arr)/sizeof(arr[0]);
for(int i = 0; i<sz;i++)
{
printf("%d", &arr[i]);
}
qsort(arr, sz, 4, int_com);
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
四、输出
1、冒泡排序的输出
2、qsort库函数的输出
五、总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了冒泡排序和C语言库函数提供的qsort数组排序函数。如有不正,请各位大佬多多指教。