要求:
对两种排序算法进行编程实现
#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; }