c语言数组排序程序设计,《C语言及程序设计》实践参考——数组的排序

返回:贺老师课程教学链接  项目要求

【项目3 - 数组的排序】

(1)编写函数,完成冒泡排序

要求不能改变下面的main函数。

//两个函数bubble_sort和output_array的声明

int main( )

{

int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76};

int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};

bubble_sort(a,20); //用冒泡法按降序排序a中元素

output_array(a,20); //输出排序后的数组

bubble_sort(b,15); //用冒泡法按降序排序b中元素

output_array(b,15); //输出排序后的数组

return 0;

}

//请在下面定义bubble_sort和output_array函数[参考解答]

#include

void bubble_sort(int arr[], int num);

void output_array(int arr[], int num);

int main( )

{

int a[20]= {86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76};

int b[15]= {27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};

bubble_sort(a,20); //用冒泡法按降序排序a中元素

output_array(a,20); //输出排序后的数组

bubble_sort(b,15); //用冒泡法按降序排序b中元素

output_array(b,15); //输出排序后的数组

return 0;

}

//下面定义自定义函数

void bubble_sort(int arr[], int num)

{

int i,j,t;

for(j=0; j

for(i=0; i

if (arr[i]

{

t=arr[i]; //交换两个数的位置,使小数下沉

arr[i]=arr[i+1];

arr[i+1]=t;

}

return;

}

void output_array(int arr[], int num)

{

int i;

for(i=0; i

printf("%d, ", arr[i]);

printf("%d\n",arr[num-1]);

return;

}

(2)字符数组排序:改造(1)的程序,使其能对字符数组进行排序,其中:

int a[20]={...};

int b[15]={...};改为

char a[20] = {'s','o','r','t','b','u','b','b','l','e','s','e','l','e','c','t','o','k','o','k'};

char b[15] = {'a','b','a',...}; //自己补足[参考解答]

#include

void bubble_sort(char arr[], int num);

void output_array(char arr[], int num);

int main( )

{

char a[20]= {'s','o','r','t','b','u','b','b','l','e','s','e','l','e','c','t','o','k','o','k'};

char b[15]= {'s','o','r','t','b','u','b','b','l','e','s','e','l','e','c'};

bubble_sort(a,20); //用冒泡法按降序排序a中元素

output_array(a,20); //输出排序后的数组

bubble_sort(b,15);

output_array(b,15);

return 0;

}

//下面定义自定义函数

void bubble_sort(char arr[], int num)

{

int i,j;

char t;

for(j=0; j

for(i=0; i

if (arr[i]

{

t=arr[i];

arr[i]=arr[i+1];

arr[i+1]=t;

}

return;

}

void output_array(char arr[], int num)

{

int i;

for(i=0; i

printf("%c, ", arr[i]);

printf("%c\n",arr[num-1]);

return;

}

(3)体验选择排序:改造(1)的程序,将bubble_sort(...)改为select_sort(...),排序算法由冒泡排序换作为选择排序,排序结果由降序变为升序,完成类似的任务。

[参考解答]

#include

void select_sort(int arr[], int num);

void output_array(int arr[], int num);

int main( )

{

int a[20]= {86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76};

int b[15]= {27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};

select_sort(a,20); //用冒泡法按降序排序a中元素

output_array(a,20); //输出排序后的数组

select_sort(b,15); //用冒泡法按降序排序b中元素

output_array(b,15); //输出排序后的数组

return 0;

}

//下面定义自定义函数

void select_sort(int array[],int n) //形参array是数组名

{

int i,j,k,t;

for(i=0; i

{

k=i; //先设第i个就为最小

for(j=i+1; j

if(array[j]

k=j; //通过循环,得到k为最小

t=array[k]; //交换a[i]和a[k]

array[k]=array[i];

array[i]=t;

}

return;

}

void output_array(int arr[], int num)

{

int i;

for(i=0; i

printf("%d, ", arr[i]);

printf("%d\n",arr[num-1]);

return;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值