直接插入排序、冒泡排序、选择排序

直接插入排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
	int n,i,j,k,a[10000],t=0;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	for (i = 1; i < n; i++)//从a[i]开始无序,循环将a[i]放到合适位置
	{
		for (j = 0; j<i; j++)//有序部分即左部分
		{
			if (a[i] < a[j])//j+1次将插入的和已排好的比
			{
				t = a[i];
				for (k = i; k > j; k--)//i-j次
				{
					a[k] = a[k - 1];//向后移一个位置
				}
				a[j] = t;
				break;
			}
		}
	}
	for (i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	return 0;
}

冒泡排序

#include <stdio.h>
void BubbleSort1(int a[],int n)
{
	for (int i = 0; i < n; i++)//控制轮数
	{
		for (int j = 0 ; j < n-i-1; j++)//控制每轮比较的数目
		{
			if (a[j + 1] < a[j])
			{
				int tmp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}
		}
	}
	for (int i = 0; i < n; i++)
		printf("%d ", a[i]);
}
int main()
{
	int N, i, a[100];
	scanf("%d", &N);
	for (i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	BubbleSort1(a, N);
}

选择排序

#include <stdio.h>
void SelectSort(int a[], int n)
{
	int temp,t;
	for (int i = 0; i < n ; i++)//比较轮数
	{
		t = i;
		temp = a[t];
		for (int j = i+1; j < n; j++)//查找最小数字
		{
			if (a[j] < temp)
			{
				t = j;//保存最小下标
				temp = a[j];//保存最小值
			}
		}
		a[t] = a[i];//交换当前数值和最小数值的下标及数值
		a[i] = temp;
	}
	for (int i = 0; i < n; i++)
			printf("%d ", a[i]);
}
int main()
{
	int N, i, a[100];
	scanf("%d", &N);
	for (i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	SelectSort(a, N);
}

猜你喜欢

转载自blog.csdn.net/weixin_44017102/article/details/87608660
今日推荐