您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

查找、排序算法

时间:09-16来源:作者:点击数:

冒泡排序

void BubbleSort(int *p, int length)
{
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10 - i - 1; j++)
		{
			if (p[j] > p[j + 1])
			{
				swap(p[j], p[j + 1]);
			}
		}
	}
}

选择排序

void SelectSort(int* arr, int n)   //arr为数据数组,n为数组长度
{
	for (int i = 0; i < n - 1; i++) 
	{
		int nMin = i;
		for (int j = i; j < n; j++) 
		{
			if (arr[nMin] > arr[j])
			{
				nMin = j;
			}
		
		}
		if (nMin != i)
		{
			swap(arr[i], arr[nMin]);
		}
	}
}

插入排序

void insertSort(int a[], int length)
{
	for (int i = 1; i < length; i++)
	{
		for (int j = i - 1; j >= 0 && a[j + 1] < a[j]; j--)
		{
			swap(a[j], a[j + 1]);
		}
	}
}

快速排序


//定义getStandard
int getStandard(int a[], int i, int j)
{
	int key = a[i];//关键值
	
	//当i<j时候执行后面语句
	while (i < j)
	{
		//当后面的元素大于等于关键值时,一直往前挪动j
		while (i < j && a[i] >= key)
		{
			j--;
		}
		if (i < j)
		{
			a[i] = a[j];
		}
		//当前面元素小于等于关键值时,一直向后挪动i
		while (i < j&&a[i] <= key)
		{
			i++;
		}
		if (i < j)
		{
			a[j] = a[i];
		}
	}
	a[i] = key;
	return i;
}

//定义无返回值QuickSort
void QuickSort(int a[], int low, int top)
{
	if (low < top)
	{
		int standard = getStandard(a, low, top);

		//递归调用
		QuickSort(a, low, standard - 1);
		QuickSort(a, standard + 1, top);
	}
}

二分查找

//声明一个函数,里面有数组,数字个数和关键值
int BinarySearch(int array[], int n, int key)
{
	int low = 0, top = n - 1;
	int mid = 0;
	
	//定义一个while循环,当low<=top时,执行后面内容
	while (low<=top)
	{
		mid = (low + top) / 2;
		if (array[mid]==key)
		{
			return mid;
		}
		if (array[mid]<key)
		{
			low = mid + 1;
		}
		else
		{
			top = mid - 1;
		}
	}
	return -1;
}
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐