排序算法是《算法与数据结构》中比较基本的算法之一。
排序算法主要可以分为内部排序和外部排序,这里我们主要讲的是内部排序。
常见的内部排序有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。
在了解之前先了解一下相关概念吧。
1.相关概念
稳定的排序算法:冒泡排序、插入排序、归并排序、桶排序、计数排序和基数排序。
不稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。
具体见下图:
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
C语言实现代码如下:
#include <bits/stdc++.h> void bubble_sort(int arr[], int len) { int i,j,temp; for(i=0;i<len-1;i++) for (j=0;j<len-1-i;j++) if (arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } int main() { int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 }; int len=(int)sizeof(arr)/sizeof(*arr); bubble_sort(arr,len); int i; for (i=0;i<len;i++) printf("%d ", arr[i]); return 0; }
动画效果: