常用的简单排序

常用的简单排序

一、冒泡排序

 冒泡排序,顾名思义就是像泡泡一样,从最底层冒到水面。


代码:

void bubblesort(int* array,int size)
{
	int i,j;
	int flag = 0;
	for (i = size;i>=1;i--)
	{
		for (j = 0;j<i-1;j++)
		{
			if(array[j] > array[j+1])
			{
				swap(&array[j],&array[j+1]);
				flag = 1;
			}
		}
		if(flag == 0)
		{
			break;
		}
	}
}
   循环里面flag的作用就是,在一次循环里面检测,本次循环有没有交换数据,如果没有就说明,此时数据

已经有序了当数据有序的时候,就可以跳出循环。

选择排序

 选择排序的思想就是每次选择一个最小的,放到序列的最前面,那么当循环完成的时候,数据有序

代码:

void selectsort(int* array,int n)
{
	int min = 0;
	int i,j;
	for (i = 0;i<n;i++)
	{
		min = i;
		for (j = i;j<n;j++)
		{
			if(array[j] < array[min])
			{
				min = j;
			}
		}
		if(min!=i)
		{
			swap(&array[min],&array[i]);
		}
	}
}
内层循环,如果找到比 min标记的数还要小的,就用min标记,一次循环下来,min标记的就是本趟排序中最小的,

然后在用外层循环缩小遍历的范围即可

直接插入排序

直接插入排序的思想:把要排序数据分成两部分,前部分是有序的,后面是无序的,每次用无序部分的第一

个值,放到前面有序部分,然后在有序的部分进行调整。


代码:

void insertsort(int* array,int n)
{
	int i,j;
	int temp = 0;
	for (i =1;i<n;i++)
	{
		temp = array[i];
		for (j = i-1; j>=0 && array[j] > temp;j--)
		{
			array[j+1] = array[j];
		}
		array[j+1] = temp;
	}
}
 

Tip:仓促整理,还有很多可以改进的地方欢迎指正。

猜你喜欢

转载自blog.csdn.net/dy_1024/article/details/79172220
今日推荐