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 : 10
100.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)代码
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 : 10
100.2 23.8 20.4 19.5 10.9 10.8 5.8 4.9 2.3 -50.2
简单分享快乐学习,如有错误请多包涵!
PS:如果没有你的关注,那我所做的将毫无意义!欢迎分享,点赞,在看。
以上是关于C++实现冒泡排序和选择排序算法的主要内容,如果未能解决你的问题,请参考以下文章
算法笔记 排序算法完整介绍及C++代码实现 HERODING的算法之路