c语言运用函数数组排序 c语言用函数实现排序

用C语言编写函数,功能是可以实现一维数组的从小到大的排序,数组长度为8#include stdio.h
void func(int *a)
{
int i,j,temp;
for(j=0;j=7;j)
{
for (i=0;i7-j;i)
if (a[i]a[i 1])
{
temp=a[i];
a[i]=a[i 1];
a[i 1]=temp;
}
}
}
int main()
{
int a[8]={8,7,6,5,4,3,2,1};
func(a);
for(int i=0;i8;i)
{
printf("%d ",a[i]);
}
return 0;
}
func就是功能函数实现数组a[8]的排序 。
C语言:输入5个数 , 用调用函数的方法 , 从小到大排序 用简单点的#includestdio.h
void sort(float *a, int n)
{
int i,j,tmp;
for(i=0; in-1; i)
for(j=0; jn-i-1; j)
if(a[j]a[j 1])
{
tmp = a[j];
a[j] = a[j 1];
a[j 1] = tmp;
}
}
void main()
{
float a[5];
int i;
printf("请输入五个数(逗号隔开):");
scanf("%f,%f,%f,%f,%f",a[0],a[1],a[2],a[3],a[4]);
sort(a,5);
printf("排序后为:");
for(i=0; i5; i)
printf("%.2f ",a[i]);
printf("\n");
}
或者三个数的 。
void sort(int *a, int *b, int *c)
{
int tmp;
if(*a*b){
tmp = *b;
*b = *a;
*a = tmp;
}
if(*a*c){
tmp = *c;
*c = *a;
*a = tmp;
}
if(*b*c){
tmp = *c;
*c = *b;
*b = tmp;
}
return;
}
扩展资料:
C语言中没有预置的sort函数 。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序 。
一、可以编写自己的sort函数 。
如下函数为将整型数组从小到大排序 。void sort(int *a, int l)//a为数组地址,l为数组长度 。
{
int i, j;
int v;//排序主体
for(i = 0; il - 1; i)
for(j = i 1; jl; j)
{
if(a[i]a[j])//如前面的比后面的大,则交换 。
{
v = a[i];
a[i] = a[j];
a[j] = v;
}
}
}
对于这样的自定义sort函数,可以按照定义的规范来调用 。
二、C语言有自有的qsort函数 。
功 能: 使用快速排序例程进行排序 。头文件:stdlib.h
原型:
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
参数:
1、待排序数组首地址 。
2、数组中待排序元素数量 。
3、各元素的占用空间大小4 指向函数的指针,用于确定排序的顺序,这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型 。
求C语言将数组元素大小排序?。?/h2>C语言将数组元素大小排序方法:
以下使用c语言运用函数数组排序的是冒泡排序法实线数组从小到大排序 。
思想:每次相邻两个数比较c语言运用函数数组排序,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后 。
10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推 。
以下是具体代码:
#include stdio.h
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//优化算法:最多进行 n-1 轮比较
for(i=0; i10-1; i){
isSorted = 1;//假设剩下的元素已经排序好了
for(j=0; j10-1-i; j){
if(nums[j]nums[j 1]){
temp = nums[j];
nums[j] = nums[j 1];
nums[j 1] = temp;
isSorted = 0;//一旦需要交换数组元素,就说明剩下的元素没有排序好
}
}
if(isSorted) break; //如果没有发生交换,说明剩下的元素已经排序好了
}
for(i=0; i10; i){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
扩展资料:
其c语言运用函数数组排序他将数组从小到大排序的算法
以下使用的是选择排序法实现数组从小到大排序 。
思想:从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置
输入的序列为10、2、3、4、5、6、9、8、7、1进行一次排序后将最小的数放在了第一位(a[0]与它后面的所有数进行比较 , 若a[0]比后面的数大,进行交换),以此类推 。
以下是具体代码:
#include stdio.h
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",n);//n为要排序的数的个数
//输入需要排序的数
for(i=0;in;i)
scanf("%d",a i);
//接下来进行排序
for(i=0;in-1;i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行
{
for(j=i 1;jn;j)//j从i后一个开始,a[i]与a[j]进行比较
{
if(a[i]a[j])//a[i]为当前值,若是比后面的a[j]大,进行交换
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置
for(j=0;jn;j)
printf("%-5d",a[j]);
printf("\n\n");
}
return 0;
}
用函数编程实现在一个未排序的长度为20的数组按升序排序常用的c语言排序算法主要有三种即冒泡法排序、选择法排序、插入法排序 。
一、冒泡排序冒泡排序:
是从第一个数开始,依次往后比较 , 在满足判断条件下进行交换 。代码实现(以升序排序为例)
#includestdio.hint main()
{
int array[20] = { 6,9,7,8,5,3,4,0,1,2 , 21,23, 18, 33, 28,29,38,26, 48,19};
int temp;
for (int i = 0; i20; i)
{//循环次数
for (int j = 0; j 20 - i-1; j)
{
if (array[j]array[j 1])
{//前面一个数比后面的数小时发生交换
temp = array[j];
array[j] = array[j 1];
array[j1] = temp;
}
}
} //打印数组
for (int i = 0; i20; i)
printf("-", array[i]);
return 0;}
}
二、选择排序以升序排序为例:
就是在指定下标的数组元素往后(指定下标的元素往往是从第一个元素开始,然后依次往后),找出除指定下标元素外的值与指定元素进行对比,满足条件就进行交换 。与冒泡排序的区别可以理解为冒泡排序是相邻的两个值对比,而选择排序是遍历数组 , 找出数组元素与指定的数组元素进行对比 。(以升序为例)
#includestdio.h
int main()
{
int array[10] = { 6,9,7,8,5,3,4,0,1,2 };
int temp, index;
for (int i = 0; i9; i)
{
index = i;
for (int j = i; j10; j)
{
if (array[j]array[index])
index = j;
}
if(i != index)
{
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
for(int i=0;i10:i)
printf("-"array[i]);
return 0;
}
三、快速排序
是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要?。缓笤侔创朔椒ǘ哉饬讲糠质莘直鸾锌焖倥判颍?整个排序过程可以递归进行,以此达到整个数据变成有序序列 。
void QuickSort(int* arr, int size)
{
int temp, i, j;
for(i = 1; i size; i)
for(j=i; j0; j--)
{
if(arr[j] arr[j-1])
{
temp = arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
C语言中通过函数调用对一维数组进行排序#include stdio.h
#include stdlib.h
#include time.h
#define MAXlen 100
void select_sort(int *x, int n) {//选择排序
int i, j, min;
int t;
for (i = 0; in - 1; i) {// 要选择的次数:0~n-2共n-1次
min = i;// 假设当前下标为i的数最小,比较后再调整
for (j = i1; jn; j) { //循环找出最小的数的下标是哪个
if (*(xj)*(xmin)) {
min = j;// 如果后面的数比前面的?。?则记下它的下标
}
}
if (min != i) {// 如果min在循环中改变了,就需要交换数据
t = *(xi);
*(xi) = *(xmin);
*(xmin) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; iMAXlen ; i) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("]",iArr[i]);
}
printf("\n");
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; iMAXlen ; i) {
if(i % 10 == 0) printf("%\n");
printf("]",iArr[i]);
【c语言运用函数数组排序 c语言用函数实现排序】 }
printf("\n\n");
return 0;
}
关于c语言运用函数数组排序和c语言用函数实现排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读