c语言中的冒泡排序与选择排序—-常见的两种排序方式

  • Post author:
  • Post category:其他


c语言中常见的两种排序



1、冒泡排序

思想:从左至右两两依次比较,如果前一个数比后一个数大的话就交换位置,否则不变。

思路例子:

比较方法

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() 
{
	int a[10] = {0};
	int i, j, t;
	printf("请输入10个数字:");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	for (i = 1; i < 10; i++)
	{
		for (j = 0; j < 10 - i; j++)
		{
			if (a[j] < a[j + 1])
			{
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("a[%d]=%d\n", i, a[i]);
	}
	return 0;
}



2、选择排序

思路:首先将第一个数字与之后的数字依次比较,如果第一个数字小于后面的数字,交换顺序。然后将第二个数字与之后的数字依次比较,后面同理。一直比较到倒数第二个数字时停止。

外部循环了数组长度-1次。

内部循环从外部循环的+1开始循环比较,直到数组最后一个数字。

选择排序

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a[10] = { 0 };
	int i, j, t;
	printf("请输入10个数字:");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	for (i = 0; i < 9; i++)
	{
		for (j = i + 1; j < 10; j++)
		{
			if (a[i] > a[j])
			{
				t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("a[%d]=%d\n", i, a[i]);
	}
	return 0;
}



版权声明:本文为qq_45979523原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。