排序算法代码

冒泡排序

#include <iostream>
using namespace std;

void BubbleSort(int arr[8]) {
	int count = 1;
	for (int j = 7; j != 0; j--) {
		for (int i = 0; i != j; i++) {
			if (arr[i] > arr[i + 1]) {
				int temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
			}
		}
		cout << "第" << count << "次排序结果" << endl;
		count++;
		for (int i = 0; i != 8; i++) {
			cout << arr[i] << endl;
		}
	}
}
int main(){
	int  arr[8] = { 16,25,39,27,12,8,45,63 };
	cout << "原始数据为" << endl;
	for (int i = 0; i != 8; i++) {
		cout << arr[i] << endl;
	}
	BubbleSort(arr);
	system("pause");
}

选择排序

 

#include <iostream>
using namespace std;

void SelectSort(int arr[8]) {
	int count = 1;
	for (int j = 7; j != 0; j--) {
		int temp = arr[0];
		int k = 0;
		for (int i = 0; i != j+1; i++) {
			if (arr[i] > temp) {
				temp = arr[i];
				k = i;
			}
		}
		arr[k] = arr[j];
		arr[j] = temp;
		cout <<"第"<<count<<"次排序"<< endl;
		count++;
		for (int i = 0; i != 8; i++) {
			cout << arr[i] <<endl;
		}
	}
}
int main(){
	int  arr[8] = { 16,25,39,27,12,8,45,63 };
	cout << "原始数据为" << endl;
	for (int i = 0; i != 8; i++) {
		cout << arr[i] << endl;
	}
	SelectSort(arr);
	system("pause");
}

 

插入排序 

#include <iostream>
using namespace std;

void InsertionSort(int arr[]) {
	for (int i = 1; i != 8; i++) {
		int j = i-1;
		int tmp = arr[i];
		while (tmp < arr[j] && j != -1) {
			arr[j+1] = arr[j];
			j--;
		 }
		arr[j+1] = tmp;
		cout << "第" <<i<<"次排序结果"<< endl;
		for (int i = 0; i != 8; i++) {
			cout << arr[i] << endl;
		}
	}
}
int main(){
	int  arr[8] = { 16,25,39,27,12,8,45,63 };
	cout << "原始数据为" << endl;
	for (int i = 0; i != 8; i++) {
		cout << arr[i] << endl;
	}
	InsertionSort(arr);
	system("pause");
}

希尔排序

#include <iostream>
using namespace std;

void ShellSort(int arr[],int length) {
	int jmp = length / 2;
	int count = 1;
	while (jmp != 0) {
		for (int i = jmp; i < length; i++) {
			int j = i- jmp;
			int tmp = arr[i];
			while (tmp < arr[j] && j >= 0) {
				arr[j+jmp] = arr[j];
				j -= jmp;
			}
			arr[jmp+j] = tmp;
		}
		jmp /= 2;
		cout <<"第"<<count<< "次排序为" << endl;
		for (int i = 0; i != 8; i++) {
			cout << arr[i] << endl;
		}
		count++;
	}
}
int main(){
	int  arr[8] = { 16,25,39,27,12,8,45,63 };
	cout << "原始数据为" << endl;
	for (int i = 0; i != 8; i++) {
		cout << arr[i] << endl;
	}
	int length = sizeof(arr) / sizeof(arr[0]);
	ShellSort(arr,length);
	system("pause");
}

快速排序

#include <iostream>
using namespace std;

void QuickSort(int arr[],int lside,int rside) {
	int mid = arr[lside];
	int right = rside;
	int left = lside;
	if (lside < rside) {
		while (left < right) {
			while (arr[right] > mid && right>lside) {

				right--;
			}
			while (arr[left] <= mid && left<rside) {
				left++;
			}
			if (left < right) {
				int tmp = arr[right];
				arr[right] = arr[left];
				arr[left] = tmp;
			}
		}
		if (left >= right) {
			arr[lside] = arr[right];
			arr[right] = mid;
		}
		cout << "排序过程为" << endl;
		for (int i = 0; i != 8; i++) {
			cout << arr[i] << endl;
		}
		QuickSort(arr, lside, right - 1);
		QuickSort(arr, right + 1, rside);
	}
}
int main(){
	int  arr[8] = { 16,25,39,27,12,8,45,63 };
	cout << "原始数据为" << endl;
	for (int i = 0; i != 8; i++) {
		cout << arr[i] << endl;
	}
	QuickSort(arr,0,7);
	system("pause");
}

堆排序

#include <iostream>
using namespace std;

void adjustHeap(int *arr, int size) {
	int j = size - 1;
	while (j != 0) {
		int base = arr[j];
		int i = (j - 1) / 2;
		if (base > arr[i]) {
			int tmp = arr[i];
			arr[i] = arr[j];
			arr[j] = tmp;
		}
		j--;
	}
	int tmp = arr[0];
	arr[0] = arr[size - 1];
	arr[size - 1] = tmp;
}
void heapSort(int *arr,int size) {
	while (size != 1) {
		adjustHeap(arr, size);
		cout << "排序过程" << endl;
		for (int i = 0; i != 8; i++) {
			cout << arr[i] <<" ";
		}
		cout << endl;
		size--;
	}
}
int main(){
	int  arr[8] = { 16,25,39,27,12,8,45,63 };
	cout << "原始数据为" << endl;
	for (int i = 0; i != 8; i++) {
		cout << arr[i] << " ";
	}
	cout << endl;
	int length = sizeof(arr) / sizeof(arr[0]);
	heapSort(arr,length);
	system("pause");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值