3道C语言编程问题求解答
编程实现对一堆数组进行冒泡排序的函数,并在main函数中验证程序的正确性
编程实现对一堆数组进行选择排序的函数,并在main函数中验证程序的正确性 展开
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void bubble_sort(int *x, int n)
{
if(x==NULL || n<=0)return;
int i,t,r,k;
for(r=n-1;r>0;r=k)//r为循环范围
{
k=0;//k=0保证排好序后循环能退出
for(i=0;i<r;i++)
{
if(*(x+i) > *(x+i+1))
{
t = *(x+i);
*(x+i) = *(x+i+1);
*(x+i+1) = t;
k = i;
}
}
}
}
void select_sort(int *x, int n)
{
if(x==NULL || n<=0)return;
int min_index,i,j,t;
for(i=0;i<n-1;i++)
{
min_index = i;
for(j=i+1;j<n;j++)
{
if(*(x+j) < *(x+min_index))
min_index = j;
}
if(min_index != i)
{
t = *(x+i);
*(x+i) = *(x+min_index);
*(x+min_index) = t;
}
}
}
int main()
{
int a,k,i=0,j=0;
int m,n;
int array[3][4];
for(k=1;k<=12;k++)
{
scanf("%d", &a);
m = (k%4==0)?(i++):i;
n = (k%4==1)?(j=0):(++j);
array[m][n] = a;
}
int min = array[0][0];
int max = array[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%2d ",array[i][j]);
if(array[i][j] > max)
max = array[i][j];
if(array[i][j] < min)
min = array[i][j];
}
printf("\r\n");
}
printf("max : %2d, min : %2d\r\n",max,min);
int array_t[10]={16,7,1,81,43,17,9,10,24,8};
bubble_sort(array_t, 10);
for(i=0;i<10;i++)
printf("%2d,",array_t[i]);
printf("\r\n");
int array_t1[10]={16,7,1,81,43,17,9,10,24,8};
select_sort(array_t1, 10);
for(i=0;i<10;i++)
printf("%2d,",array_t1[i]);
printf("\r\n");
}
这是第几题的
三道题全在;
main()函数中printf("max : %2d, min : %2d\r\n",max,min);之前是第一道题,求最最大值和最小值
bubble_sort()第二道,冒泡排序
select_sort() 第三道,选择排序
2013-12-11