冒泡排序
冒泡排序是一个最基本,最简单的交换排序算法,也是学C语言第一次接触的排序算法。
冒泡排序的基本思想是:依次比较相邻的两个数,将小数放在前面,大数放在后面。由于过程像一个冒泡的过程,所以有了这个形象的名字。
冒泡排序在一个二重循环中进行,所以时间复杂度为O(n^2)
冒泡排序的C++语言实现:
/****************************
*Name:冒泡排序.cpp
*Tags:排序
*Note:
*****************************/
#include<iostream>
#defineMAX_SIZE 1000
usingnamespace std;
intBubbleSort(int *, int, int);
intmain()
{
int nums[MAX_SIZE];
int len, i;
cout << "Input the number ofthe numbers: ";
cin >> len;
for(i = 0; i < len; i++) {
cin >> nums[i];
}
BubbleSort(nums, 0, len); // 冒泡排序
cout << "The result of thesort process: " << endl;
for(i = 0; i < len; i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
intBubbleSort(int *nums, int start, int end)
{
int i, j, temp;
for(i = start; i < end-1; i++) {
for(j = 0; j < end - i - 1; j++) {
if(nums[j] > nums[j+1]) {
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
} //排序过程
return 0;
}
冒泡排序是一个稳定的排序算法,但是当规模n很大时,效率就没有其他高级算法那么好了,对于冒泡排序的一个改进算法是鸡尾酒排序,即双端冒泡排序,当然还有有名的快速排序了。