数据结构与算法分析 --- 排序算法

xiaoxiao2021-02-28  70

数据结构与算法分析 — 排序算法

概述 排序算法 冒泡排序 插入排序 希尔排序 堆排序 归并排序 快速排序

概述

后面的排序算法中,假设待排元素是整数,且按照非递减排序. 后面程序中待排元素统一定义如下:

typedef int ElementType;

冒泡排序(Bubble Sort)

它重复地遍历待排序的序列,一次比较相连的两个元素,如果他们的顺序错误就把他们交换过来.每一次遍历,都使最后的元素是前面的序列中最大的.遍历序列的工作是重复地进行直到没有再需要交换.

冒泡排序程序

void Bubble_Sort(int A[], int N) { int i,j,tmp; int flag; for ( i = N-1; i > 0; i-- ) { flag = 1; for ( j = 0; j < i; j++ ) if ( A[j] > A[j+1] ) { tmp = A[j]; A[j] = A[j+1]; A[j+1] = tmp; flag = 0; } if ( flag ) break; } }

插入排序(Insertion Sort)

插入排序由 N1 趟排序组成.对于 P=k 趟,插入排序保证从位置 0 到位置P上的元素为已排序状态.直到 P=N1 趟结束.

插入排序程序

void Insertion_Sort(ElementType A[], int N) { int i,j; ElementType X; for ( i = 1; i < N; i++ ) { X = A[i]; for ( j = i; j > 0 && A[j-1] > X; j-- ) A[j] = A[j-1]; A[j] = X; } }

希尔排序(Shell Sort)

转载请注明原文地址: https://www.6miu.com/read-66296.html

最新回复(0)