本文章全面总结了常见的内部排序算法,包括插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序以及基数排序,帮助读者理解每种算法的原理与应用场景。
在我们期末考试的时候我编写了一些内部排序的示例代码,因为我们的数据结构课程只涵盖内部排序的内容,所以我只能专注于练习这些排序算法.有些内排序的思想很好理解,并且可以通过图示来帮助理解和学习,但是实现起来可能比较复杂;而另外一些则难以理解并且编码也较为困难。这让我颇费了一番心思。
下面我会展示我编写的程序主框架代码:
```cpp
// 头文件包含
#include
using namespace std;
#include InsertionSort.h
#include ShellsSort.h
#include QuickSort.h
#include SelectionSort.h
#include MergingSort.h
#include RadixSort.h
#define LENGTH 10
int main( int argc, char** argv )
{
// 定义顺序表
SqList a;
int objArray[LENGTH] = {278, 109, 63, 930, 589, 184, 505, 269, 8, 83};
// 初始化顺序表
for (int i = 1; i < a.length + 1; i++) {
a.r[i].key = objArray[i-1];
a.r[i].otherinfo = \0;
}
// 各种排序算法的调用注释掉,可以根据需要取消
//InsertSort( a );
//BInsertSort( a );
//ShellSort(a, dlta2, 3);
//BubbleSort( a );
//QuickSort( a, 1, LENGTH );
//SelectSort( a );
//HeapSort( a );
//MergeSort( a );
SLList b;
int i;
for (i = 1; i <= LENGTH; ++i) {
b.r[i].keys[0] = objArray[i-1]%10;
b.r[i].keys[1] = objArray[i-1]%100/10;
b.r[i].keys[2] = objArray[i-1]/100;
}
// 基数排序
RadixSort( b );
for (i = 1; i < LENGTH + 1; ++i)
cout << a.r[i].key << ;
cout<