C语言插入排序

插入排序是一种简单直观的排序算法,其基本思想是将一个元素插入已经排好序的部分,逐步构建有序序列。插入排序的工作原理类似于整理扑克牌的过程,不断将手中的牌插入到已经有序的牌序中。

具体来说,插入排序的步骤如下:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  3. 如果已排序的元素大于新元素,则将该元素移到下一位置。
  4. 重复步骤 3,直到找到已排序的元素小于或等于新元素的位置。
  5. 将新元素插入到该位置后。
  6. 重复步骤 2~5,直到整个序列都被排好序。

以下是插入排序的升序和降序的实现

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
//升序
void insertqort(int* a, int len)
{
	int temp = 0;
	for (int i = 1; i < len; i++)
	{
		
		if (a[i - 1] > a[i])
		{
			int temp = a[i];

			int j = i - 1;
			for (; j >= 0 && a[j] > temp; j--)
			{
				a[j + 1] = a[j];//后移动
			}
			a[j + 1] = temp;
		}
	}
}
//降序
void seletqort(int* a, int len)
{
	for (int i = 0; i < len; i++)
	{
		int max = i;
		for (int j = i + 1; j < len; j++)
		{
			if (a[j] > a[max])
			{
				max = j;
			}
		}
		if (i != max)
		{
			int tmp = a[i];
			a[i] = a[max];
			a[max] = tmp;
		}
	}
}
int main()
{
	int a[4];
	for (int i = 0; i < 4; i++)
	{
		scanf("%d", &a[i]);
		
	}
	seletqort(a, 4);
	//insertqort(a, 4);
	for (int i = 0; i < 4; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}

 

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