排序算法之二---冒泡排序

冒泡的基本思路:从元素最后处开始向前多遍扫描(邻位比较),遇到逆序元素就交换位置,使得每次扫面都能将扫面区中的最小值移至最前位置

#include <stdio.h>

void bubble_sort(int arr[] ,int length)
{
    int i,j;
    for (i = 0; i < length; i++){
        for (j = length-1; j>i ; j--){
            if (arr[j-1] > arr[j]){
                int tmp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}

int main(int argc,char *args[])
{
    int arr[] = {6,4,5,67,78,45,534,5,57,65,75,346,8,54};
    bubble_sort(arr,sizeof(arr)/sizeof(int));
    int i;
    for (i = 0; i < sizeof(arr)/sizeof(int); i++){
        printf("%d ",arr[i]);
    }
    return 0;
}
时间: 2024-12-28 10:49:28

排序算法之二---冒泡排序的相关文章

排序算法--(二)

选择排序 直接选择排序: 选择排序,每一趟找到一个最小(大)值,每一趟遍历的数据减少一次. template <typename T> void SelectSort(T a[],int length) { T temp; for (int i=0;i<length;i++) { int k =i; for (int j=i+1;j<length;j++) { if (a[j]<a[k]) k=j; //这里只是对比它小的元素中最小的位置进行标记,每次相当于最多移动一次. }

排序算法之从冒泡排序所想到的

1.算法思想描述: 1)将相邻的两个数进行比较,如果前面的一个大于后面的一个,则将他们交换.每次循环能使一个数达到有序状态. 2.时间复杂度: 平均O(n^2).最佳:O(n),在序列一开始就是正序的时候取得 3.实现及优化. 以下给出三种实现方式 /* * bubblesort.cpp * * Created on: 2014年5月17日 * Author: pc */ #include <iostream> #include <cstdio> #include <ctim

学习排序算法(二):Pairwise方法之Ranking SVM

学习排序算法(二):Pairwise方法之Ranking  SVM 1. Pairwise方法的基本思想 Pairwise考虑了文档顺序的关系.它将同一个query的相关文档其中起来,把任意两个文档组成一个pair.我们研究就是以这个pair文档对来研究的. 2. Ranking SVM 在测试的时候,我们就把一个query的所有结果先构建所有可能的pair,然后输入到学习到的模型中,得到每个pair的相对顺序.根据推算就可以得到所有搜索结果的排序了. 典型的Pairwise方法就有rankin

学习排序算法(二):Pairwise方法之RankNet

学习排序算法(二):Pairwise方法之RankNet 前面一篇博文介绍的Ranking SVM是把LTR问题转化为二值分类问题,而RankNet算法是从另外一个角度来解决,那就是概率的角度. 1. RankNet的基本思想 RankNet方法就是使用交叉熵作为损失函数,学习出一些模型(例如神经网络.决策树等)来计算每个pair的排序得分,学习模型的过程可以使用梯度下降法. 2. 方法流程 首先,我们要明确RankNet方法的目的就是要学习出一个模型,这个模型就是给文档算法的函数f(d, w)

排序算法总结之冒泡排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它的基本思想就是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 例如:初始序列3,6,4,2,11,10,5:从头开始,两两相比,若a[i]>a[i+1],则将两者交换: 从上面的排序过程来看,其实在第2趟结束后,数据序列就已经是有序的了

复习数据结构:排序算法(二)——冒泡排序

这篇复习冒泡排序.     冒泡排序也是一种稳定排序.内排序. 冒泡排序的基本思想:对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换. 插入排序比冒泡排序快! 上面说的是普通的冒泡排序算法,时间复杂度是O(n^2),这种方法只能一趟排序操作只能找到一个最大值或最小值,消耗时间太多.     改进方法1:我们可以让每趟排序中进行正向和反向两遍冒泡的方法,一次就可以同时得到

常见的排序算法(二) 交换排序(冒泡排序,快速排序)

今天,给大家带来的是交换排序. 首先,我们来了解一下什么叫交换排序.所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动.   那么接下来,我们来看一下.冒泡排序. 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排

排序算法总结二

本文接排序算法总结一 3. 冒泡排序 冒泡排序的基本思想:以正序排列为例,我们首先要将最大的数沉到最底下,从第一个数开始,比较相邻的两个数,如果为逆序则交换这两个数,重复这个操作直到倒数第二个数,此时最大的数已沉到最底下:然后再从第一个数开始,用同样的方法将次大的数沉到次底下,重复这个过程直到排序成功.代码如下: void PaoSort1(vector<int>& a) { int length = a.size(); for (int i = 0; i < length -

排序算法(二)——选择排序及改进

选择排序 基本思想 冒泡排序中有一个缺点,比如,我们比较第一个数a1与第二个数a2的时候,只要a1比a2大就会交换位置,但是我们并不能确定a2是最小的元素,假如后面还有比它更小的,该元素还会与a2再次进行交换,而且这种交换有可能发生多次才能确定a2的最终位置. 选择排序可以避免这种耗费时间的交换操作,从第一个元素开始,扫描整个待排数组,找到最小的元素放之后再与第一个元素交换位置,然后再从第二个元素开始,继续寻找最小的元素与第二个元素交换位置,依次类推. java实现 //选择排序 public