1.插入排序
方式:从小到大排序
解释:双层循环,外层循环对应比较的后一个数据元素,保证每一个元素都进行了一次插入,内层循环对应比较的前一个数据元素,并逐个向前对比直到找到前一个元素比后一个小,开始下一轮比较。由此,从data[0]和data[1]开始,外层向后增量,内层向前插入到合适位置,保证有序行。
#include <iostream>
using namespace std;
enum Errcode{
sucessful = 0,
error
};
class insertionSort
{
public:
int getData(){
size_t num = sizeof(data)/(sizeof(int));
cout << "num is:" << num << endl;
while(num)
{
cin >> data[--num];
}
return sucessful;
}
void swap(int* a, int* b)
{
temp = *a;
*a = *b;
*b = temp;
}
int sort()
{
size_t num = sizeof(data)/sizeof(int);
for(size_t i = 0; i < num; ++i)
{
int tmp = i;
for(size_t j = i -1; j >= 0; j--,tmp--)
{
if(data[j] > data[tmp])
{
swap(&data[tmp], &data[j]);
}
else
break;
}
}
}
void print()
{
size_t num = sizeof(data)/(sizeof(int));
cout << "from min to max:" << endl;
for(int i = 0; i < num; i++)
{
cout << data[i] << " ";
}
cout <<endl;
}
private:
int data[10];
int temp;
};
int main(){
insertionSort* insSort = new insertionSort;
insSort->getData();
insSort->sort();
insSort->print();
}
结果:
[root@jn datastructcpp]# ./a.out
num is:10
3
574
456
5875478
54674
3735
673
636
3563
6364
from min to max:
3 456 574 636 673 3563 3735 6364 54674 5875478
[root@jn datastructcpp]#