数据结构-排序-快速排序(c++实现)

 #include<iostream>
using namespace std;

#define MAXN 20
typedef int keytype;

typedef struct {
	keytype  key;
}Redtype;

typedef struct {
	Redtype r[MAXN + 1];
	keytype length;
}Sqlist;

int Partition(Sqlist& L, int low, int high) {
	L.r[0] = L.r[low];
	int pivotkey = L.r[0].key;
	while (low < high) {
		while (low < high && L.r[high].key >=pivotkey) 
			high--;
		L.r[low] = L.r[high];    //将交换改进成移动
		while (low < high && L.r[low].key <= pivotkey)
			low++;
		L.r[high] = L.r[low];
	}
	L.r[low] = L.r[0];
	return low;
}

void Qsort(Sqlist& L, int low, int high) {
	if (low < high) {
		int pivotloc = Partition(L, low, high);
		Qsort(L, low, pivotloc - 1);
		Qsort(L, pivotloc + 1, high);
	}
}
int main() {
	Sqlist L;
	L.length = 9;
	for (int i = 0; i < L.length; i++) {
		cin >> L.r[i].key;
	}
	Qsort(L,0,8);
	for (int i = 1; i < L.length; i++)
		cout << L.r[i].key << ' ';
}

猜你喜欢

转载自blog.csdn.net/qq_43710881/article/details/105894885