排序算法分类:
- 内部排序(在排序过程中不需要访问外存就可以完成排序)
- 外部排序
内部排序分类:
- 交换排序
- 冒泡排序
- 快速排序
- 选择排序
- 直接选择排序
- 堆排序
- 插入排序
- 直接插入排序
- 希尔排序
- 合并排序
外部排序:
常见的是多路归并算法,即将原文件分为多个能够一次装入内存一部分,分别把每一部分调入内存完成排序,然后对已经排序的子文件进行归并排序
冒泡排序法:
冒泡排序法是一种相邻数据交换的排序方法。
冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。
核心代码如下:
//冒泡排序
//a 传递的要排序的数组
//n 数组元素的长度
void BubbleSort(int a[],int n){
int i,j,temp;
int flag = 0;
for(i = 0 ; i < n ; i++){
for(j = n - 1 ; j > i; j--){
if(a[j] < a[j-1]){
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
flag = 1;
}
}//如果一遍下来没有数据交换,则不需要再继续循环
if(flag == 0)
break;
else
flag = 0;
}
}
简单选择排序法
选择排序的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,不断重复这个过程,直到只剩一个记录为止。
核心代码如下:
//简单选择排序
//a 要排序的数组
//n 数组的元素个数
void SelectSort(int a[],int n){
int i,j,k,;
int temp;for(i = 0 ; i < n-1 ; i++){
k = i;
for(j = i+1 ; j < n ; j++){
if(a[j] < a[k])
k = j;
}if(k != i){
temp = a[i];
a[i] = a[k];
a[k] = temp;
}}
}
#排序算法#【1】概述、冒泡排序、选择排序,布布扣,bubuko.com
时间: 2024-09-29 22:37:02