直接插入排序 冒泡排序
要求:
对两种排序算法进行编程实现
#include<iostream>
using namespace std;
typedef int Status;
typedef int Status;
typedef int KeyType;
typedef int InfoType;
typedef struct {
KeyType key;
InfoType otherinfo;
}RedType;
typedef struct {
RedType r[21];
int length;
}SqList;
//初始化
Status InitSqList(SqList &L)
{
L.length = 0;
return 1;
}
//顺序表的建立
void CreateSqList(SqList &L)
{
int n;
cout << "请输入顺序表的元素个数:";
cin >> n;
cout << "请依次输入元素:";
for (int i = 1; i <= n; i++)
{
cin >> L.r[i].key;
L.length++;
}
}
//直接插入法
void InsertSort(SqList& L)
{
int i, j;
for (i = 1; i <= L.length; ++i)
{
L.r[0] = L.r[i];
j = i;
while (j > 1 && L.r[0].key < L.r[j - 1].key)
{
L.r[j] = L.r[j - 1];
j--;
}
L.r[j] = L.r[0];
}
cout << "直接插入排序结果为:";
for (i = 1; i <= L.length; i++)
{
cout << L.r[i].key << " ";
}
}
//冒泡排序
void BubbleSort(SqList& L)
{
int m,flag,j;
m = L.length - 1;
flag = 1;
while (m > 0 && flag == 1)
{
for (j = 1; j <= m; j++)
{
if (L.r[j].key > L.r[j + 1].key)
{
flag = 1;
L.r[0] = L.r[j];
L.r[j] = L.r[j + 1];
L.r[j + 1] = L.r[0];
}
}
--m;
}
cout << "冒泡排序结果为:";
for (int i = 1; i <= L.length; i++)
{
cout << L.r[i].key << " ";
}
}
int main()
{
SqList L;
//直接插入排序
InitSqList(L);
CreateSqList(L);
InsertSort(L);
cout << endl;
//冒泡排序
InitSqList(L);
CreateSqList(L);
BubbleSort(L);
return 0;
}