三大排序算法实现(冒泡,选择,快排)

#include <stdio.h>

void bubble_sort(int *array,int len)
{
	int i,j,tmp;
	for(i = 0; i < len; i++)
	{
		for(j = 0; j < len - i - 1; j++)
		{
			if(array[j] > array[j + 1])
			{
				tmp = array[j];
				array[j] = array[j + 1];
				array[j + 1] = tmp;
			}
		}
	}
}

void select_sort(int *array,int len)
{
	int i,j,k,tmp;
	for(i = 0; i < len - 1; i++)
	{
		k = i;//(k中保存i中的值)
		for(j = i + 1; j < len; j++)
		{
			if(array[k] < array[j])
			{
				k = j;//k中始终保存较小的元素的下标
			}
		}//内重for循环结束
		if(k != i)//如果执行if,说明前面的if成立过,则交换
		{
			tmp = array[i];
			array[i] = array[k];
			array[k] = tmp;
		}
	}
}

void quicksort(int *array,int start,int end)
{
	int i = 0;
	int length = end - start + 1;
	if(start < end)
	{
		int buf[100];
		int k = start;
		int m = end;
		int pivot = array[start];//选取定标
		for(i = 0; i < length; i++)
		{
			buf[i] = array[start + i];
		}//拷贝原数组
		for(i = 1; i < length; i++)//放元素
		{
			if(pivot < buf[i])//如果比定标大,放在定标的右边
			{
				array[m] = buf[i];
				m--;//自右向左放置
			}
			else
			{
				array[k] = buf[i];//如果比定标小,放在定标的左边
				k++;
			}
		}
		array[m] = pivot;//放定标
		quicksort(array,start,k - 1);//递归调用
		quicksort(array,k + 1,end);
	}
}

void print(int *array,int len)
{
	int i;
	for(i = 0; i < len - 1; i++)
		printf("%d ",array[i]);
	printf("%d\n",array[len - 1]);
}
int main(void)
{
	int array[] = {1,25,10,14,35,11,89,45,5};
	int len = sizeof(array)/sizeof(array[0]);
	

	printf("********bubble sort*************\n");
	bubble_sort(array,len);
	print(array,len);

	printf("********select sort*************\n");
	select_sort(array,len);
	print(array,len);

	printf("********quick sort*************\n");
	quicksort(array,0,len);
	print(array,len);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值