网站设计工资,wordpress 分类列表页,莱芜专注搜狗推广,思勤传媒网站建设公司冒泡排序 冒泡排序的过程很简单#xff0c;就是不断比较相邻两个元素的大小关系#xff0c;若逆序则交换之#xff0c;这样通过一轮的比较#xff0c;关键字最大的记录就沉底了。 一般地说#xff0c;第i趟冒泡排序是从第一个元素起到第n-i1个元素依次比较相邻两个记录的关…冒泡排序 冒泡排序的过程很简单就是不断比较相邻两个元素的大小关系若逆序则交换之这样通过一轮的比较关键字最大的记录就沉底了。 一般地说第i趟冒泡排序是从第一个元素起到第n-i1个元素依次比较相邻两个记录的关键字并在“逆序”时交换相邻记录其结果是这n-i1个记录中关键字最大的记录被交换到n-i1的位置上。 当然也可以反过来从后往前进行这样每经过一趟排序就把未排序的序列中最小的元素放在它应当处于的位置上然后下次比较就不再让前面的元素参与。 整个排序过程需要进行k趟冒泡排序其中k至少为1至多为n-1次如果一趟冒泡排序中没有出现交换元素的操作则说明序列已经有序可以停止排序。 算法分析 时间复杂度正序时O(n) 逆序时O(n2)平均时间复杂性O(n2)。 一般情况下貌似效率不及直接插入排序尽管它们的平均时间复杂度都是O(n2)。 冒泡排序代码 假设数组元素为整型并且记录本身就为关键字。 设置标志变量这样当序列有序时及时退出循环避免冗余处理。 Bubble Sort typedef int ElemType;void BubbleSort(ElemType A[], int n)
{ElemType temp;bool sorted false;for(int i0;in-1; i){sorted true;for(int j0;jn-1-i;j){if(A[j]A[j1]){tempA[j];A[j]A[j1];A[j1]temp;sorted false;}}if(sorted){break;}}} 转载于:https://www.cnblogs.com/mengdd/archive/2012/11/26/2789710.html