冒泡排序,选择排序,插入排序的区别
2014-12-07 14:02
246 查看
#include<stdio.h> int swap(int *a,int *b) { int t=*a; *a=*b; *b=t; } /* 冒泡排序的原理:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后。最将剩下的N-1个数继续比较,将次大数移至倒数第二位。 依此规律,直至比较结束。 冒泡排序的代码如下: */ void bubble_sort(int a[], int n){ int i,j; for(i=0;i<n-1;++i) for(j=0;j<n-i-1;++j) { if(a[j]>a[j+1]) swap(&a[j],&a[j+1]); } } /* 选择排序的原理:每次在无序队列中“选择”出最小值,放到有序队列的最后,并从无序队列 中去除该值(具体实现略有区别)。 选择排序的代码如下: */ void selection_sort(int a[],int n){ int i,j; int min; for(i=0;i<n;++i) { min=i; for(j=i+1;j<n;++j) { if(a[j]<a[min]) min=j; } if(min!=i) swap(&a[min],&a[i]); } } /* 插入排序的原理:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的 移动数据,空出一个适当的位置,把待插入的元素放到里面去。 插入排序的代码如下: */ void insertion_sort(int a[],int n){ int i,j; for(i=1;i<n;++i) { int A=a[i]; j=i-1; while(j>=0&&a[j]>A) { a[j+1]=a[j]; j--; } a[j+1]=A; } } int main(int argc, char *argv[]) { int a[]={5,6,7,1,2,3}; // bubble_sort(a , 6); //selection_sort(a , 6); insertion_sort(a, 6); int i; for(i=0;i<sizeof(a)/sizeof(int);++i) { printf("%d ",a[i]); } printf("\n"); return 0; }
相关文章推荐
- 三种基本排序-冒泡排序、直接插入排序、选择排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
- 直接插入排序,选择排序,冒泡排序
- 排序算法(快速排序、直接插入排序、直接选择、冒泡排序)
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序...)
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 插入排序与冒泡排序的区别
- java实现各种基础排序(冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、归并排序)
- 常用的选择排序.Shell排序.快速排序.冒泡排序.插入排序的算法
- 选择排序,冒泡排序,直接插入排序
- 基础排序——冒泡排序、选择排序、插入排序的讲解、代码实现
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 三种基本排序-冒泡排序、直接插入排序、选择排序
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- 排序算法: 冒泡排序, 快速排序,希尔排序,直接插入排序 ,直接选择排序,归并排序,堆排序
- php冒泡排序 快速 选择 插入 排序
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 排序之冒泡排序、选择排序、插入排序