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)代码
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:如果没有你的关注,那我所做的将毫无意义!欢迎分享,点赞,在看。
