//
// main.cpp
// Sorting
//
// Created by yanzhengqing on 12-12-6.
// Copyright (c) 2012年 yanzhengqing. All rights reserved.
#include <iostream>
using namespace std;
int input_array(int const *p)
{
printf("please input the array numbers......\n");
for (uint i = 0; i < 10;i++)
{
scanf("%d",p++);
}
return 0;
}
int output_array(int const *p)
{
for (uint i = 0; i < 10;i++)
{
printf("%d\t",*(p++) );
}
return 0;
}
/* 冒泡排序其属于快速排序范畴,快速排序是冒泡排序的改进
若初始为正序,则只需要进行一趟排序,在排序的过程中进行n-1次元素之间的比较
若初始为逆序,则需要进行n-1趟排序,进行n(n-1)/2 次元素之间的比较
数据范例
21 32 43 22 56 87 65 49 76 10
第一趟: 21 32 22 43 56 65 49 76 10 87
第二趟: 21。。。。。。
*/
int Bubble_sort(int *a,int n)
{
int temp =0,l =1;
bool flag = false; //标记使用,当循环里没有变化时表示排序结束。
for(int i =1 ;i<=n;n--)
{
for(int j =1 ;j<n ;j++)
{
if(a[j-1]>a[j])
{
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
flag = true;
}
}
if(!flag)
{
cout<<"bubble_sort 最后一趟排序"<<endl;
output_array(a);
cout<<endl;
break;
}
else
{
cout<<"bubble_sort 第~~"<<l<<"~~趟排序"<<endl;
output_array(a);
cout<<endl;
flag = false;
l++;
}
}
return 0;
}
int main(int argc, const char * argv[])
{
int array[10] = {0};
input_array(array);
Bubble_sort(array,sizeof(array)/sizeof(int));
return 0;
}
******************************************************************************************************
输出实例:
please input the array numbers......
21
32
43
22
56
87
65
49
76
10
bubble_sort 第~~1~~趟排序
21 32 22 43 56 65 49 76 10 87
bubble_sort 第~~2~~趟排序
21 22 32 43 56 49 65 10 76 87
bubble_sort 第~~3~~趟排序
21 22 32 43 49 56 10 65 76 87
bubble_sort 第~~4~~趟排序
21 22 32 43 49 10 56 65 76 87
bubble_sort 第~~5~~趟排序
21 22 32 43 10 49 56 65 76 87
bubble_sort 第~~6~~趟排序
21 22 32 10 43 49 56 65 76 87
bubble_sort 第~~7~~趟排序
21 22 10 32 43 49 56 65 76 87
bubble_sort 第~~8~~趟排序
21 10 22 32 43 49 56 65 76 87
bubble_sort 第~~9~~趟排序
10 21 22 32 43 49 56 65 76 87
bubble_sort 最后一趟排序
10 21 22 32 43 49 56 65 76 87
冒泡排序比较简单,这里注意点就是加一个标志flag位防止已经成序的继续比较。
其他地方就没有什么可以深挖的了。
有高见望留言。。。。。。