#include <stdio.h>
#include <stdlib.h>
#include <time.h> //用到了time函数
#define arraySize 10//随机数组个数
//打印函数
void print(int array[])
{
printf("打印随机数组\r\n");
int i;
for(i=0;i<arraySize;i++)
{
printf("%d\t",array[i]);
}
printf("打印完毕\r\n");
}
//产生随机数组
void createRandomArray(int array[])
{
printf("生成新的随机数组\r\n");
int i,number;
srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
for (i=0; i<arraySize; i++)
{
array[i] = rand() % 101; //产生0-100的随机数
//printf("%d ", array[i]);
}
print(array);
}
//冒泡排序
void bubbleSort(int array[])
{
int i,j,temp;
for(i=0;i<arraySize-1;i++)
for(j=0;j<arraySize-1-i;j++)
if(array[j]>array[j+1])//从小到大
{
temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
//选择排序
void selectionSort(int array[])
{
int i,j,temp;
for(i=0;i<arraySize-1;i++)
for(j=i+1;j<arraySize;j++)
if(array[i]>array[j])//从小到大
{
temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
//快速排序(重点)
void quickSort(int array[],int left,int right)
{
while(left>=right)
{
return;
}
int i=left,j=right,key=array[left];
while(i<j)//一次查找
{
while(i<j&&array[j]>=key)//从后向前搜索
{
j--;
}
array[i]=array[j];
while(i<j&&array[i]<=key)//从前向后搜索
{
i++;
}
array[j]=array[i];
}
array[i]=key;
quickSort(array,left,i-1);
quickSort(array,i+1,right);
}
int main()
{
int randomArray[arraySize];
printf("选择排序方法:1、冒泡排序\t2、选择排序\t3、快速排序\t0、退出\r\n");
int select;
while(scanf("%d",&select))
{
switch(select)
{
case 1:
printf("---------------------\r\n");
createRandomArray(randomArray);
printf("冒泡排序\r\n");
bubbleSort(randomArray);
print(randomArray);
printf("---------------------\r\n");
break;
case 2:
printf("---------------------\r\n");
createRandomArray(randomArray);
printf("选择排序\r\n");
selectionSort(randomArray);
print(randomArray);
printf("---------------------\r\n");
break;
case 3:
printf("---------------------\r\n");
createRandomArray(randomArray);
printf("快速排序\r\n");
quickSort(randomArray,0,arraySize-1);
print(randomArray);
printf("---------------------\r\n");
break;
case 0:
exit(0);
break;
default:
printf("---------------------\r\n");
printf("输入有误,重新输入\r\n");
printf("---------------------\r\n");
break;
}
}
return 0;
}
冒泡排序 选择排序 快速排序(C语言)
最新推荐文章于 2024-09-27 14:59:03 发布