从终端输入10个数字(乱序),利用简单选择排序法对这10个数字排序,结果从小到大排列。
#include<stdio.h>
#define ARRAY_SIZE(buf) (sizeof(buf) / sizeof(buf[0]))
void scanf_nu(int *buf, int n)
{
int i;
for(i = 0; i < n; i++)
scanf("%d",&buf[i]);
}
void swap(int *a, int *b)
{
if(*a != *b:){
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
}
void selection(int *buf, int n)
{
int i, j;
int min;
for(i = 0; i < n; i++){
min = i;
for(j = i; j < n; j++){
if(buf[min] > buf[j]){
min = j;
}
}
swap(&buf[min],&buf[i]);
}
}
void show(int *buf, int n)
{
int i;
for(i = 0; i < n; i++)
printf("%d ",buf[i]);
putchar('\n');
}
int main(int argc, const char *argv[])
{
int buf[10] = {};
scanf_nu(buf, 10);
selection(buf, ARRAY_SIZE(buf));
show(buf,ARRAY_SIZE(buf));
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int buf[10] = {};
int i, j, n, temp, max;
for(i = 0; i < 10; i++)
{
scanf("%d", &buf[i]);
}
n = sizeof(buf) / sizeof(int);
printf("Output:\n");
for(i = 0; i < n; i++)
printf("%d ", buf[i]);
puts("\n");
printf("paixu Output:\n");
for(i = 0; i < n - 1; i++)
{
max = 0;
for(j = 1; j < n - i; j++)
{
if(buf[j] >= buf[max])
{
max = j;
}
}
if(max != n - 1 - i)
{
buf[max] ^= buf[n - 1 - i];
buf[n - 1 -i] ^= buf[max];
buf[max] ^= buf[n - 1 - i];
}
}
for(i = 0; i < n; i++)
printf("%d ", buf[i]);
puts(" ");
return 0;
}
这篇博客展示了如何利用C语言实现简单选择排序法对从终端输入的10个乱序整数进行排序,分别给出了输入、排序过程及排序后的输出。程序中包含了输入读取、交换元素以及选择最小值进行交换的函数。
677

被折叠的 条评论
为什么被折叠?



