栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

排序问题的C++实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

排序问题的C++实现

排序问题的C++实现

问题描述基于相邻元素交换的排序方法

冒泡排序

算法描述算法步骤具体实现 选择排序

算法描述算法步骤算法实现 插入排序

算法描述算法步骤算法实现

问题描述

对于一个无序序列q=,将其按照从小到大的顺序排序成有序序列。

基于相邻元素交换的排序方法 冒泡排序 算法描述

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

算法步骤

①比较相邻的元素。如果第一个比第二个大,就交换他们两个。
②对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
③针对所有的元素重复以上的步骤,除了最后一个。
④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

具体实现
#include 
using namespace std;

void bubble_sort (int a[], int len) {		//冒泡排序
	
	int i, j;
	
	for (i=0; ia[j+1]) {
				
				int swap = a[j];
				a[j] = a[j+1];
				a[j+1] = swap;	
			
			}
		}
	}
}
选择排序 算法描述

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

算法步骤

①首先在未排序序列中找到最小(大)元素,与第一个元素交换。
②再从剩余未排序元素中继续寻找最小(大)元素,与第二个元素交换。
③重复第二步,直到所有元素均排序完毕。

算法实现
void select_sort (int a[], int len) {
	
	int i, j;
	int min_index;						//当前最小值对应的下标 
	
	for (i=0; i 
插入排序 
算法描述 

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤

①将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
②从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

算法实现
void insert_sort (int a[], int len) {
	
	int i, j;
	int key;							//用于保存当前需要插入的值
	
	for (i=1; i=0 && a[j]>key){			
			a[j+1] = a[j];
			j--;
		}
		
		a[j+1] = key;
	}
}

(未完待续。。。)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702237.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号