排序(2)冒泡排序

Reading time ~1 minute

排序(2)#

冒泡排序##

冒泡排序实际上是一个非常简单的排序算法,非常容易实现—-遍历文件,如果近邻两个元素大小顺序不对,就将两者交换,重复这样的操作直到整个文件排好序。 如下用TypeScript做了一个简单的演示:代码地址

以下是基于链表的c语言版本实现:

#include <stdio.h>
#include <stdlib.h>

const int max = 100;

int get_random(){
        return (rand() % max);
}

void init_list(int a[],int len){
        for (int i = 0; i < len; i++) {
                a[i] = get_random();
        }
}

void swap(int * p1,int * p2){
        int p= *p1;
        *p1 = *p2;
        *p2 = p;
}


void print_list(int a[],int len){
        for (int i = 0; i<len; i++) {
                printf("%d ",a[i]);
        }
        printf("\n");
}

int main(int argc, char *argv[])
{
        int a[20];
        init_list(a,20);
        print_list(a,20);
        for (int i=0 ; i < 19; i++) {
                for (int j=19; j > i; j--) {
                       if(a[j-1] > a[j]){
                               swap(&a[j-1],&a[j]);
                       }
                }
              print_list(a,20);
        }
        return 0;
}



运行环境:ubuntu12.04

排序(1)

#排序(1)###插入排序##插入排序是一个对少量数据进行排序的有效算法。现实中最常见的插入排序的例子莫过于打扑克,整理手中的扑克。开始摸牌时,我们左手为空的,牌面朝下放在桌上。接着,一次从桌子上摸起一张牌,并将它插入左手正确的位置,并确保左手的牌从左到右是按照从小到大的顺...… Continue reading