#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void getArr(int arr[],int n)
{
unsigned sr = time(0);
srand(sr);
int i;
for(i=0;i<n;i++){
arr[i]=24+rand()%10;
}
printf("random arr is:\n");
}
void printArr(int arr[],int n)
{
int i;
for(i=0;i<n;i++){
printf("%d\t",arr[i]);
}
printf("\n");
}
//冒泡
void bubbleSort(int arr[],int n)
{
int temp,i,j;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("bubbleSort:\n");
}
//选择
void selectSort(int arr[],int n)
{
int key,temp,i,j;
for(i=0;i<n-1;i++){
key=i;
for(j=i+1;j<n;j++){
if(arr[key]>arr[j]){
key=j;
}
}
if(key!=i){
temp=arr[key];
arr[key]=arr[i];
arr[i]=temp;
}
}
printf("selectSort:\n");
}
//快速
int partition(int arr[],int low,int high)
{
if(low>high)return 0;
int key=arr[low];
while(low<high){
while(low<high&&arr[high]>=key){
high--;
}
arr[low]=arr[high];
while(low<high&&arr[low]<=key){
low++;
}
arr[high]=arr[low];
}
arr[low]=key;
return low;
}
void quickSort(int arr[],int low,int high)
{
if(low<high){
int pos=partition(arr,low,high);
quickSort(arr,low,pos-1);
quickSort(arr,pos+1,high);
}
}
//插入排序
void insertSort(int arr[],int n)
{
int key,index,temp,i;
for(i=1;i<n;i++){
key=arr[i];
index=i-1;
while(index>=0&&arr[index]>key){
arr[index+1]=arr[index];
index--;
}
arr[index+1]=key;
}
printf("insertSort:\n");
}
//希尔排序
void shellSort(int arr[],int n)
{
int temp,gap,i,j;
for(gap=n/2;gap>0;gap/=2){
for(i=gap;i<n;i++){
for(j=i-gap;j>=0&&arr[j]>arr[j+gap];j-=gap){
temp=arr[j];
arr[j]=arr[j+gap];
arr[j+gap]=temp;
}
}
}
printf("shellSort:\n");
}
int main()
{
int arr[10];
int len=sizeof(arr)/sizeof(int);
getArr(arr,len);
printArr(arr,len);
bubbleSort(arr,len);
printArr(arr,len);
printf("\n\n");
getArr(arr,len);
printArr(arr,len);
selectSort(arr,len);
printArr(arr,len);
printf("\n\n");
getArr(arr,len);
printArr(arr,len);
quickSort(arr,0,len-1);
printf("quickSort:\n");
printArr(arr,len);
printf("\n\n");
getArr(arr,len);
printArr(arr,len);
insertSort(arr,len);
printArr(arr,len);
printf("\n\n");
getArr(arr,len);
printArr(arr,len);
shellSort(arr,len);
printArr(arr,len);
printf("\n\n");
return 0;
}