C++实现交换排序算法(冒泡排序、快速排序)

排序算法分为五大类,一共是有九种,如下:
插入类:直接插入排序、折半插入排序、希尔排序
交换类:冒泡排序、快速排序
选择类:简单选择排序、堆排序
归并类:二路归并排序
基数类:多关键字排序
九种算法的时间复杂度、空间复杂度和稳定性小结如下:
C++实现交换排序算法(冒泡排序、快速排序)_第1张图片
本文放出交换算法的两种排序算法代码。
八种常用的排序算法代码可以到这里下载。

冒泡排序

void BubbleSort(int R[], int n) {
     
	int i, j, temp, flag;
	cout << endl << "冒泡排序:" << endl;
	for (i = n - 1; i >= 1; --i) {
     
		flag = 0;
		for (j = 1; j <= i; ++j) {
     
			if (R[j - 1] > R[j]) {
     
				temp = R[j];
				R[j] = R[j - 1];
				R[j - 1] = temp;
				flag = 1;
			}
			
		}
		for (int k = 0; k < n; k++)
			cout << R[k] << " ";
		cout << endl;
		if (flag == 0)
		{
     
			cout << endl;
			return;
		}
	}
}

快速排序

void QuickSort(int R[], int low, int high) {
     
	int temp, i = low, j = high;
	if (low < high) {
     
		temp = R[low];
		while (i < j) {
     
			while (j > i && R[j] >= temp)--j;
			if (i < j) {
     
				R[i] = R[j];
				++i;
			}
			while (i < j && R[i] < temp)++i;
			if (i < j) {
     
				R[j] = R[i];
				--j;
			}
		}
		R[i] = temp;
		for (int k = 0; k <=high; k++)
			cout << R[k] << " ";
		cout << endl;
		QuickSort(R, low, i - 1);
		QuickSort(R, i + 1, high);
	}
}

总体

#include 
using namespace std;
void BubbleSort(int R[], int n) {
     
	int i, j, temp, flag;
	cout << endl << "冒泡排序:" << endl;
	for (i = n - 1; i >= 1; --i) {
     
		flag = 0;
		for (j = 1; j <= i; ++j) {
     
			if (R[j - 1] > R[j]) {
     
				temp = R[j];
				R[j] = R[j - 1];
				R[j - 1] = temp;
				flag = 1;
			}
			
		}
		for (int k = 0; k < n; k++)
			cout << R[k] << " ";
		cout << endl;
		if (flag == 0)
		{
     
			cout << endl;
			return;
		}
	}
}
void QuickSort(int R[], int low, int high) {
     
	int temp, i = low, j = high;
	if (low < high) {
     
		temp = R[low];
		while (i < j) {
     
			while (j > i && R[j] >= temp)--j;
			if (i < j) {
     
				R[i] = R[j];
				++i;
			}
			while (i < j && R[i] < temp)++i;
			if (i < j) {
     
				R[j] = R[i];
				--j;
			}
		}
		R[i] = temp;
		for (int k = 0; k <=high; k++)
			cout << R[k] << " ";
		cout << endl;
		QuickSort(R, low, i - 1);
		QuickSort(R, i + 1, high);
	}
}
int main()
{
     
	int A[8] = {
      49,38,65,97,76,13,27,49 };
	int n = 8;
	int R[8];
	cout << "原始数组:";
	for (int k = 0; k < n; k++) {
     
		R[k] = A[k];
		cout << R[k] << " ";
	}
	cout << endl;
	BubbleSort(R, n); //冒泡排序
	cout << "原始数组:";
	for (int k = 0; k < n; k++) {
     
		R[k] = A[k];
		cout << R[k] << " ";
	}
	cout << endl;
	int low = 0, high = 7;
	cout << "快速排序" << endl;
	QuickSort(R, low, high); //快速排序
	cout << endl;
	return 0;
}

主要参考的书籍是《数据结构高分笔记》2021版

你可能感兴趣的:(数据结构,排序算法,快速排序)