冒泡排序, 插入排序,选择排序
#include <iostream>
#define MAX_SIZE 100
using namespace std;
typedef int keytype;
typedef struct records //排序类型
{
keytype key;
//fields other;
};
typedef records LIST[MAX_SIZE]; //排序数组
void Swap(records &x, records &y)
{
records temp;
temp = x;
x = y;
y = temp;
}
/*
气泡排序,时间复杂性为O(n^2)
*/
void BubbleSort(int n, LIST list)
{
int i,j;
for(i = 0; i <= n-1; i++)
{
for(j = n-1; j >= i+1; j--)
{
if(list[j].key < list[j-1].key)
Swap(list[j], list[j-1]);
}
}
}
/*
插入排序,时间复杂性为O(n^2)
*/
void InsertationSort(int n, LIST list)
{
int i, j;
for(i = 1; i < n; i++)
{
j = i;
while((list[j].key < list[j-1].key) && (j > 0))
{
Swap(list[j],list[j-1]);
j--;
}
}
}
/*
选择排序,时间复杂性为O(n^2)
*/
void SelectionSort(int n, LIST list)
{
keytype lowkey;
int lowindex;
int i, j;
for(i = 0; i < n; i++)
{
lowindex = i;
lowkey = list[i].key;
for(j = i; j < n; j++)
{
if(list[j].key < lowkey)
{
lowkey = list[j].key;
lowindex = j;
}
}
Swap(list[i], list[lowindex]);
}
}
int main()
{
cout << "Total number of data:" << endl;
int total;
cin >> total;
int i;
LIST list;
for (i = 0; i < total; i++)
{
cin >> list[i].key;
}
//BubbleSort(total, list);
//InsertationSort(total, list);
SelectionSort(total, list);
for (i = 0; i < total; i++)
{
cout << list[i].key << " ";
}
return 0;
}