C++实现冒泡排序和选择排序算法

Posted C和C加加

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现冒泡排序和选择排序算法相关的知识,希望对你有一定的参考价值。

来源:http://i0k.cn/59dz4



本文通过C++实现了两类基础且经典的排序算法(冒泡法选择排序法)。

1.冒泡法

(1)何谓冒泡法

  • 两两比较相邻元素A(I)和A(I+1)(I=1,2,…N-1),如果A(I)>A(I+1),则交换A(I)和A(I+1)的位置;

  • 对剩下的N-1个元素,再两两进行比较,按同样规则交换它们的位置,经过N-2次比较,将次最大值交换到A(N-1)的位置;

  • 如法炮制,经过N-1趟的“冒泡处理”,每趟进行N-i次的比较,全部数列有序。

(2)代码

#include <iostream>
using namespace std;
int main(){
/** 需要排序的数组 */ double array[] = {5.8,2.3,4.9,10.8,-50.2,20.4,19.5,23.8,10.9,100.2}; /** 数组的长度 */ int array_length = sizeof(array)/sizeof(double); cout << "length of array is : " << array_length << endl;
// 冒泡法进行降序排序 double temp;
for(int i = 0; i < array_length-1; i++){ for(int j=0; j < array_length-i-1; j++){ if(array[j]<array[j+1]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } }
// 输出排序结果 int i = 0; while( i < array_length){ cout << array[i] << "\t"; i ++ ; } cout << endl; }

(3)运行结果

length of array is : 10100.2   23.8    20.4    19.5    10.9    10.8    5.8     4.9     2.3     -50.2

2.选择排序法

选择排序( Selection sort)是一种简单直观的排序算法。一般是初学者接触的第一个排序算法,简称为选排。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

(1)选择排序的工作原理

选择排序算法通过选择和交换来实现排序,其排序流程如下:

  • 首先从原始数组中选择最小的(或最大的)1个数据,将其和位于第1(n)个位置的数据交换。

  • 接着从剩下的n-1个数据中选择次小的1个元素,将其和第2(n)个位置的数据交换

  • 然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大的排序

(2)代码

#include <iostream>
using namespace std;
int main(){
/** 需要排序的数组 */ double array[] = {5.8,2.3,4.9,10.8,-50.2,20.4,19.5,23.8,10.9,100.2}; /** 数组的长度 */ int array_length = sizeof(array)/sizeof(double); cout << "length of array is : " << array_length << endl; // 选择排序法进行排序 double temp; for(int i=0; i < array_length - 1; i++){ for(int j=i+1; j < array_length; j ++ ) { if(array[j] > array[i]){ temp = array[i]; array[i] = array[j]; array[j] = temp; } } }
// 输出排序结果 int i = 0; while( i < array_length){ cout << array[i] << "\t"; i ++ ; } cout << endl;}

(3)运行结果

length of array is : 10100.2   23.8    20.4    19.5    10.9    10.8    5.8     4.9     2.3     -50.2

简单分享快乐学习,如有错误请多包涵!


PS:如果没有你的关注,那我所做的将毫无意义!欢迎分享点赞在看

以上是关于C++实现冒泡排序和选择排序算法的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

算法笔记 排序算法完整介绍及C++代码实现 HERODING的算法之路

九种经典排序算法详解(冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)

C++:冒泡排序

内部排序算法总结(下)C++实现

编一个C++程序 创建一个选择排序法的函数模板sort 并在main()执行