博客
关于我
排序(插入排序、起泡排序、选择排序和快速排序)
阅读量:563 次
发布时间:2019-03-09

本文共 1790 字,大约阅读时间需要 5 分钟。

排序

一、插入排序

算法思想:逐步将记录插入到已排好序的有序表中。

(一)直接插入排序(Straight Insertion Sort)

//直接插入排序void InsertSort(int a[], int n){   	int i,j;	int t; //交换中间变量 	//从第二个开始插入	for(i = 2; i<=n; i++) //控制循环多少趟 	{   		if(a[i-1]>a[i])		{   			a[0] = a[i];			for(j = i-1; a[j] > a[0]; j--)				a[j+1] = a[j]; //大于a[0]的记录往后移 			a[j+1] = a[0];		}	}}

(二)折半插入排序(Binary Insertion Sort)

//折半插入排序 void BInsertSort(int a[], int n){   	int i,j;	int t;	int low, high, mid;	for(i = 2; i<=n; i++) //控制循环的趟数,每一趟采用折半查找 	{   		a[0] = a[i];		low = 1; 		high = i-1;		while(low <= high)		{   			mid = (low + high)/2;			if(a[mid] >= a[0])				high = mid - 1;			else				low = mid + 1;		}		for(j = i-1; j >= high+1; j--) //查找之后进行记录后移 			a[j+1] = a[j];		a[high+1] = a[0];	}}

二、起泡排序(Bubble Sort)

算法思想:从前向后依次检查每一对相邻元素,一旦发现逆序即交换二者的位置。对于长度为n的序列,共需做n - 1次比较和不超过n - 1次交换,这一过程称作一趟扫描交换。每一趟扫描都至少会有一个元素就位。

//起泡排序void BubSort(int a[], int n){   	int i, j, t;	for(i = 1; i
a[j+1]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } }}

三、快速排序(Quick Sort)

算法思想: 通过一趟排序将第一个记录排好位置,同时将待排序记录分割成独立的两部分。其中前部分的关键字都比后部分的关键字小。然后再分别对这两部分继续递归排序,以达到整个序列有序。

//第一趟排序int Partition(int a[], int low, int high){   	int pkey;	pkey = a[low];	while(low < high)	{   		while(a[high] >= pkey && low < high)			high--;		a[low] = a[high];		while(a[low] < pkey && low < high)			low++;		a[high] = a[low];	}	a[low] = pkey;	return low;}//进行递归排序void QSort(int a[], int low, int high){   	if(low < high)	{   		int mid = Partition(a, low, high);		QSort(a, low, mid-1);		QSort(a, mid+1, high);	}}void QuickSort(int a[], int n){   	QSort(a, 1, n);}

四、简单选择排序(Simple Selection Sort)

算法思想:

  1. 第一趟:
    在n个记录中选一个最小关键字的记录与第一个记录进行交换;
  2. 第二趟:
    在后n-1个记录中选一个最小关键字的记录与第二个记录交换;
  3. 第 i 趟:
    在后n-(i-1)个记录中选一个最小关键字的记 与第i个记录交换; 共需n-1趟。
void SelectSort(int a[], int n){   	int i, j;	int min, t;	for(i = 1; i

转载地址:http://vytpz.baihongyu.com/

你可能感兴趣的文章
logstash mysql 准实时同步到 elasticsearch
查看>>
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现&lt; 以及&gt; 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>