今天一觉醒来9:09,刚好迟到。下午又没去教室自习,晚上测试还完了快速排序的写法!
9:30~11:30:自习刷题;
14:00~16:00:写作业看网课;
21:40~22:00:学习快排;
刷题数:2;
快速排序归纳总结:
原理:将数组中某一个元素作为关键数,之后将所有数组中元素跟关键数作比较,小于它的放数组前面,小的放后面;再将分好的两段数组进行跟上面一阳的操作,即递归;
#include<stdio.h>
#include<string.h>
#include<math.h>
int sort(int left,int right,int *a)
{
int i,j,key,t;
if(left>=right)
return 0;
i=left;
j=right;
key=a[left];
while(i!=j)
{
while(i<j&&a[j]>=key)//从右往左找到第一个小于key的数
j--;
while(i<j&&a[i]<=key)//从左往右找到第一个大于key的数
i++;
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=key;
sort(left,i-1,a);//将左边的数组递归
sort(i+1,right,a);//将右边的数组递归
return 0;
}
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",a+i);
}
sort(0,9,a);
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}