几个C语言的板子(快排、链表、哈希表

几个C语言的板子

快排

void qsort(int v[], int left, int right)
{
	int i, last;
	if (left >= right) return;
        // 交换left与中值
	swap(v, left, (left + right) / 2);
        
        // 让left在区间[left, right]中找到正确的下标,以升序(即小于v[i] < v[left])为例
        // 遍历区间[left + 1, right],若存在k个小于v[left]的数,则v[left]的下标应为left+k,而这k个数占据[left,left+k)
        // 遍历过程中用区间[left + 1, last]存放小于v[left]的数
        // last初值设置为left,此时区间为空集
        last = left;
	for (int i = left + 1; i <= right; i++)
	{
		if(v[i] < v[left])
		{
			swap(v, ++last, i);
		}
	}
	swap(v, last, left);

	qsort(v, left, last -1 );
	qsort(v, last + 1, right);
}

猜你喜欢

转载自www.cnblogs.com/go2sleep/p/12535306.html
今日推荐