选择排序-冒泡排序-插入排序

#include 
#include 

/*
选择排序:
用第0个元素与后面的元素对比,将最小的数排在最前面;
然后将第1个元素与剩下的元素对比,将最小的数放在排序序列后面;
以此类推

注:每一次循环不会从第一个数开始做对比,【从前减】(减掉最小数,第一次循环:i=0;第二次循环,i=1,以此类推)
*/
int SelectSort(int *Array,int length)
{
	int i, j;
	int temp = 0;
	for (i = 0; i < length; i++)
	{
		for (j = i; j < length-1; j++)
		{
			//从小到大排序方式
			if (Array[i] > Array[j + 1])
			{
				//排序
				temp = Array[i];
				Array[i] = Array[j + 1];
				Array[j + 1] = temp;
			}
		}
	}
}
/*
选择排序修改后写法
*/

int SelectSort1(int *Array, int length)
{
	int i, j;
	int temp = 0;
	for (i = 0; i < length; i++)
	{
		for (j = i+1; j < length; j++)
		{
			//从小到大排序方式
			if (Array[i] > Array[j])
			{
				//排序
				temp = Array[i];
				Array[i] = Array[j];
				Array[j] = temp;
			}
		}
	}
}

/*
冒泡排序
int BubbleSort(int *Array, int length)
注;每次都会从第一个数开始,两两对比
   但每一次循环后,就要减掉一个数,【从后减】(最大数,i=0;j Array[j + 1])
			{
				//排序
				temp = Array[j];
				Array[j] = Array[j + 1];
				Array[j + 1] = temp;
			}
		}
	}
}

/*
插入排序InsertSort
将索引为1的元素开始向前比较,一旦前面的元素大于自己,则让前面的元素后移;
直到没有可比较元素时,将自己插入到当前空出来的位置
*/
int InsertSort(int *Array, int length)
{
	//1.索引从 1 开始
	for (int i = 1; i < length; i++)
	{
		//2.取出用于比较的元素
		int temp = Array[i];
		int j = i;
		while (j>0)
		{
			//3.判断前一个元素与取出的元素比较大小
			if (temp < Array[j - 1])
			{
				//4.让前一个元素后移
				Array[j] = Array[j-1];
			}
			else
			{
				break;
			}
			j--;
		}
		//5.将元素插入到空出的位置
		Array[j] = temp;
	}
}

int InsertSort1(int *Array, int length)
{
	//1.从第一个元素开始,依次去除所有用于比较的元素
	for (int i = 1; i < length; i++)
	{
		//2.遍历去除前面元素进行比较
		for (int j = i; j>0; j--)
		{
			//3.如果前面的元素大于当前元素,交换位置
			if (Array[j - 1] > Array[j])
			{
				int temp = Array[j - 1];
				Array[j - 1] = Array[j];
				Array[j] = temp;
			}
			else
			{
				break;
			}
		}
	}
}

/*
打印输出
*/
int PrintArray(int *Array, int length)
{
	int i;
	for (i = 0; i < length; i++)
	{
		printf("%5d", Array[i]);
	}
}

int test01()
{
	int Array[10] = { 3, 2, 1, 4, 22, 32, 101, 7, 89, 54 };
	int length = sizeof(Array) / sizeof(int);
	SelectSort1(Array, length);
	PrintArray(Array,length);
}

int test02()
{
	int Array[10] = { 3, 2, 1, 4, 22, 32, 101, 7, 89, 54 };
	int length = sizeof(Array) / sizeof(int);
	BubbleSort(Array, length);
	PrintArray(Array, length);
}

int test03()
{
	int Array[3] = { 1, 3, 2};
	int length = sizeof(Array) / sizeof(int);
	InsertSort(Array, length);
}

int test04()
{
	int Array[3] = { 1, 3, 2 };
	int length = sizeof(Array) / sizeof(int);
	InsertSort1(Array, length);
}

int main()
{
	test01();
	test02();
	test03();
	test04();
	system("pause");
	return 0;
}

你可能感兴趣的:(排序算法,算法,数据结构)