/****************直接插入排序**************/
void directinsert_sort(int a[], int len)
{
int i,j;
int temp;
for (i=1; i<len; i++) //
{
temp = a[i];
for (j=i-1; j>=0; j--)
{
if (temp < a[j]) //如果插入的值小于某个值,则退出循环
break;
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
选择排序
原理:每次从待排序的记录中选出最大的数,放入已排好序的子文件中,直到全部记录完成。
/****************选择排序************/
void select_sort(int a[], int len)
{
int i,j;
int max,k; //最大值及其下标
for (i=0; i<len-1; i++) //遍历len-1次
{
max = a[i]; //每次遍历前max 和 k的设置
k = i;
for (j=i+1; j<len; j++) //每次取得剩余的最大值,及其下标
{
if (a[j] > max)
{
max = a[j];
k = j;
}
}
a[k] = a[i];
a[i] = max;
}
}
以下为main函数及数组打印函数:
/**********打印数组函数*************/
void print_array(int a[], int len)
{
for (int i=0; i<len; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
int main()
{
int a[10]={3,5,7,5,2,7,8,4,1,30};
cout<<"排序前:";
print_array(a,10);