#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NUMBER 10
void Bubble(int* arr,intlen)//冒泡排序 时间复杂度O(n^2) 稳定
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-i-1;j++)
{
if(arr[j]>arr[j+1])
{
flag=1;
Swap(&arr[j],&arr[j+1]);
}
}
}
}
void Swap(int *a,int *b)//交换函数
{
int c=*a;
*a=*b;
*b=c;
}
void Select(int *arr,int len)//选择排序 时间复杂度O(n^2) 空间复杂度O(1) 不稳定(跳跃式交换)
{
for(int i=0;i<len-1;++i)
{
int min=i;
for(int j=i;j<len;++j)
{
if(arr[min]>arr[j])
{
min=j;
}
}
Swap(&arr[i],&arr[min]);
}
}
void Show(int* arr,int len)//打印数组
{
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
srand((unsigned int)time(NULL));
int arr[NUMBER]={0};
int brr[NUMBER]={0};
for(int i=0;i<NUMBER;i++)
{
arr[i]=rand()%100;
printf("%d ",arr[i]);
}
printf("\n");
for(int i=0;i<NUMBER;i++)
{
brr[i]=rand()%100;
printf("%d ",brr[i]);
}
printf("\n冒泡排序结果为:\n");
Bubble(arr,NUMBER);
Show(arr,NUMBER );
printf("选择排序结果为:\n");
Select(brr,NUMBER );
Show(brr,NUMBER );
return 0;
}