码迷,mamicode.com
首页 > 编程语言 > 详细

几种排序算法比较

时间:2015-06-15 16:23:19      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
int *mp_sort(int *a,int len)//冒泡排序
{   
	if(a== NULL|| len <= 0)
		return NULL;
	int i = 1, j = 1;
	for (i; i < len - 1;++i)
	for (j = 0; j <len- i; ++j)
	{
		int temp;
		if (a[j]>a[j + 1])
		{
			temp = a[j];
		a[j] = a[j + 1];
		a[j + 1] = temp;
	  }
	}
	return a;
}
int Bin_search(int *a, int len,int key)//二分查找
{   
	if (a == NULL || len <= 0)
		return NULL;
	int low = 0, high = len - 1;
	while (low<=high)
	{   
		int middle = (low + high) / 2;
		if (a[middle] == key)
			return middle;
		else if (a[middle] < key)
			low = middle + 1;
		else
			high = middle - 1;
	}
	return -1;
}
int *ch_sort(int *a, int len) //选择排序
{   
	if (a == NULL || len <= 0)
		return NULL;
	int i, j;
	for (i = 0; i < len - 1;++i)
	for (j = i + 1; j < len;++j)
	if (a[i]>a[j])
	{
		int temp;
		temp = a[i];
		a[i] = a[j];
		a[j] = temp;
	}
	return a;
}
int partition(int a[], int len, int low, int high)//利用分治法进行一趟快速排序
{
	if (a == NULL || len <= 0 || low < 0 || high >= len)
		return -1;
	int start = low;
	while (low < high)
	{
		if (a[high] <a[start])
		{
			int temp;
			temp = a[start];
			a[start] = a[high];
			a[high] = temp;
			start = high;
			low++;
			if (a[low]>a[start])
			{
				temp = a[low];
				a[low] = a[start]; 
				a[start] = temp;
				start = low;
				high--;
			}
		}
		else high--;	
	}
return start;

}
int *quik_sort(int a[], int len, int low, int high)//快速排序
{ 
	if (low==high)
		return NULL;
	int p = partition(a, len, low, high);
	quik_sort(a, len, low, p - 1);
	quik_sort(a, len, p + 1, high);
	return a;
}

int main()
{
	int a[] = { 10,2,9,4,5,6,7,8,3};
	int i = 0;
	//int *p = sort(a, sizeof(a)/sizeof(a[0]));
	/*int i = 0;
	if (p!=NULL)
	/*for (i; i < sizeof(a) / sizeof(a[0]); ++i)
	printf("%d ", *(a + i));*/
	/*int m = Bin_search(a, (sizeof(a) / sizeof(a[0])),1);
	if (m)
		printf("%d\n", a[m]);*/
	int *p=quik_sort(a, 9, 0, 8);
	for (i; i < sizeof(a) / sizeof(a[0]); ++i)
	printf("%d ",a[i]);
	printf("\n");
	return 0;
}

几种排序算法比较

标签:

原文地址:http://blog.csdn.net/yangshuangtao/article/details/46504537

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!