C语言整数排序方法: 冒泡排序法、qsort函数、中间变量

每日一题

题目:给出三个整数 a,b,c,要求把这三位整数从小到大排序。
算法思想:

1. 思路一:如果小白做题可以简单地让三个数两两比 较,scanfprintf即可
2. 思路二:可以使用 if 语句进行条件判断,如果 a 大于 b,则借助于中间变量 t 互换 a 与 b 值, 依此类推比较 a 与 c、b 与 c,最终结果即为 a、b、c 的升序排列。
3. 思路三(冒泡排序法)从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。本题从小到大排序,如果n个数,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。
4.思路四:使用C语言中qsort函数来进行排序。
一、程序代码:(思路一)

#include

int main() {
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	if(a < b && a < c) {
		printf("%d ", a);
		if(b < c) {
			printf("%d %d", b, c);
		} else {
			printf("%d %d", c, b);
		}
	} else if(b < c) {
		printf("%d ", b);
		if(a < c) {
			printf("%d %d", a, c);
		} else {
			printf("%d %d", c, a);
		}
	} else {
		if(a < b) {
			printf("%d %d %d", c, a, b);
		} else {
			printf("%d %d %d", c, b, a);
		}

	}
	return 0;
}

运行结果:

2 5 3
2 3 5

二、程序代码:(思路二)

#include 

int main() {
	int a, b, c, t;
	scanf("%d %d %d",&a, &b, &c);
	if(a>b) {  //如果a大于b,借助中间变量t实现a与b值的互换
		t = a;
		a = b;
		b = t;
	}
	if(a>c) { 
		t = a;
		a = c;
		c = t;
	}
	if(b>c) { 
		t = b;
		b = c;
		c = t;
	}
	printf("%d %d %d",a, b, c);
	return 0;
}

运行结果:

9 8 20
8 9 20

三、程序代码:(思路三)

#include

int main() {
	int t, m[4], i, j;
	scanf("%d %d %d",&m[1],&m[2],&m[3]);
	for(j = 1; j <= 2; j++) {
		for(i = 2; i <= 3; i++) {
			if(m[j]>m[i]) {
				t = m[i];
				m[i] = m[j];
				m[j] = t;
			} 
		}
	}
	printf("%d %d %d", m[1],m[2],m[3]);
	return 0;
}

运行结果:

3 5 4
3 4 5

四、程序代码:(思路四)

#include
#include

int comp(const void*a,const void*b)//用来做比较的函数。
{
    return *(int*)a-*(int*)b;
}
int main(){
	int a[3];
	scanf("%d %d %d", &a[0], &a[1], &a[2]);
	qsort(a, 3, sizeof(int), comp);
	printf("%d %d %d",a[0],a[1],a[2]);
	return 0;
}

运行结果:

2 5 4
2 4 5

注:
qsort()函数用法为,qsort(数组名,元素个数,元素占用的空间(sizeof),比较函数),头文件为

#include

总结
个人认为,以上方法 ,冒泡排序为最佳选择,建议请指出哦

你可能感兴趣的:(C语言,c语言)