很基础的排序算法
冒泡法
冒泡法的mehcanism很简单,但从动图原理来看
我更愿意称之为沉淀法,就是最大的那个在每轮iteration后会沉到最后去
当然,这样客观来讲是轻的(小的数)往上浮动
浊坠清扬,本来就是同一过程的一体两面
算法步骤
- 从第0个元素开始往后,对数组中的相邻元素对进行比较
- 若前一个和后一个满足升序排列,则不动;否则进行交换
- 在第i次迭代时,需要进行(n-i)次比较和交换
- 进行n-1次迭代,易知算法复杂度为O(n^2)
//很基础的排序算法
//1. 冒泡法
//冒泡法的mehcanism很简单,但从动图原理来看
//我更愿意称之为沉淀法,就是最大的那个在每轮iteration后会沉到最后去
//当然,这样客观来讲是轻的(小的数)往上浮动
//浊坠清扬,本来就是同一过程的一体两面
//
#include<iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
//
//算法步骤
//1. 从第0个元素开始往后,对数组中的相邻元素对进行比较
//2. 若前一个和后一个满足升序排列,则不动;否则进行交换
//3. 在第i次迭代时,需要进行(n-i)次比较和交换
//4. 进行n-1次迭代,易知算法复杂度为O(n^2)
/**
冒泡法排序
@parameter unsorted_array:原始数组
@parameter size: 数组长度
*/
void Bubble_Sort(int unsorted_array[],int size)
{
int temp;
for(int i = 1;i<size;i++){
for(int j=0;j<size-i;j++)
{
if(unsorted_array[j] > unsorted_array[j+1])
{
temp = unsorted_array[j];
unsorted_array[j] = unsorted_array[j+1];
unsorted_array[j+1] = temp;
}
}
}
}
int main(){
int seed = 100;
srand(seed);
int size = 100;
int test_array[size];
//初始化
for(int i =0;i<size;i++)
{
test_array[i] = (rand()%100);
cout<<left<<setw(5)<<test_array[i];
if( ((i+1)%10)== 0)
cout<<endl;
}
cout<<"************************************************************"<<endl;
Bubble_Sort(test_array,size);
for(int i =0;i<size;i++)
{
cout<<left<<setw(5)<<test_array[i];
if( ((i+1)%10)== 0)
cout<<endl;
}
return 0;
}