Description
读取10个整型数据12 63 58 95 41 35 65 0 38 44,然后通过冒泡排序,快速排序,插入排序,分别对该组数据进行排序,输出3次有序结果,每个数的输出占3个空格
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//交换函数
void swap(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int pos(int a[], int left, int right)
{
int i = left;
for (int j = left; j < right; j++)
{
if (a[j]<a[right])
{
swap(a[i], a[j]);
i++;
}
}
swap(a[i], a[right]);
return i;
}
//冒泡排序
void bubble_sort(int b[],int n)
{
for (int i = 0; i < n; i++)
{
int flag=0;
for (int j = n; j >i; j--)
{
if (b[j-1]>b[j])
{
swap(b[j - 1], b[j]);
flag = 1;
}
}
if (0==flag)
{
break;
}
}
}
//快速排序
void quick_sort(int b[],int low,int high)
{
if (low<high)
{
int a = pos(b, low, high);
quick_sort(b, low, a-1);
quick_sort(b, a+1, high);
}
}
//插入排序
void insert_sort(int a[],int n)
{
int flag;
for (int i = 1; i < n; i++)
{
int j;
if (a[i]<a[i-1])
{
flag = a[i];
for (j = i - 1; flag < a[j]; j--)
{
a[j + 1] = a[j];
}
a[j + 1] = flag;
}
}
}
//输出函数
void print(int a[],int n)
{
for (int i = 0; i < n; i++)
{
printf("%3d", a[i]);
}
printf("\n");
}
int main()
{
int a[10];
int b[10];
int c[10];
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
for (int i = 0; i < 10; i++)
{
b[i] = a[i];
c[i] = a[i];
}
bubble_sort(a, 9);
print(a, 10);
quick_sort(b, 0, 9);
print(b, 10);
insert_sort(c, 10);
print(c, 10);
return 0;
}