#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void getArr(int arr[],int n) //产生随机数
{
int i = 0;
unsigned sr = time(NULL);
srand(sr);
for (i = 0; i < n ; i++)
{
arr[i] = 24 +rand()%10;
}
printf("random arr is: \n");
}
void printfArr(int arr[],int n)
{
int i;
for ( i= 0; i < n; i++)
{
printf("%d\t",arr[i]); // \t水平制表符当前位置移动到下一个tab位置
} // \r回车 将当前位置移动到下一行的开头
printf("\n"); // \f换页
}
void bubbleSort(int arr[],int n)
{
int change = 0;
int line,line2,temp;
for (line = 0; line < n-1;line++)
{
for (line2 = 0; line2 < n-line-1; line2++) //对比上层次记循环少一
{
if(arr[line2]>arr[line2+1])
{
temp = arr[line2];
arr[line2] = arr[line2+1];
arr[line2+1] = temp;
change++;
}
}
}
printf("change number of times:%d bulleSort is:\n",change);
}
void selectSort(int arr[],int n)
{
int change2 = 0;
int sign;//标记当前
int line,tline,temp;
for( line = 0; line < n-1;line++)
{
sign = line;
for(tline = line+1; tline < n; tline++) //遍历序列一个一个找 发现一个换一个sign 换一个line
{
if(arr[sign]>arr[tline])
{
sign = tline;
change2++;
}
}
if(sign!=line)
{
temp = arr[line];
arr[line] = arr[sign];
arr[sign] = temp;
change2++;
}
}
printf("change number of times:%d selectSort is:\n",change2);
}
int partition(int arr[],int begin,int end)
{
if(begin > end)
{
return 0;
}
int key = arr[begin];
while (begin<end)
{
while (begin<end&&arr[end]>=key)
{
end--;
}
arr[begin] = arr[end];
while (begin<end &&arr[begin]<=key)
{
begin++;
}
arr[end] = arr[begin];
}
arr[begin] = key;
return begin;
}
void quickSort(int arr[],int begin,int end)
{
if(begin < end)
{
int pos = partition(arr, begin, end);
quickSort(arr, begin, pos-1);
quickSort(arr, pos+1, end);
}
}
void insertSort(int arr[],int n)
{
int change = 0;
int i, sign, index;
for( i = 1;i < n;i++)
{
sign = arr[i];
index = i - 1;
while(index >= 0&&arr[index]>sign)
{
change++;
arr[index + 1] = arr[index];
index--;
}
arr[index +1 ] = sign;
}
printf("change number is %d insertSort:\n",change);
}
int main()
{
int arr[10];
int arrtest[10]={9,8,7,6,5,4,3,2,1,-3};
int len = sizeof(arr)/sizeof(int);
getArr(arr,len);
printfArr(arr,len);
// bubbleSort(arrtest,len);
// selectSort(arrtest,len);
// quickSort(arr,0,len-1);
insertSort(arrtest,len);
insertSort(arr,len);
printfArr(arrtest,len);
printfArr(arr,len);
}