假设你是一个up主,经常拍摄记录生活的视频,那么在各个平台上,你的视频就会有播放量,在后台就可以根据你的播放量进行排序
而排序有许多中方法,第一种方法是选择排序,遍历所有视频,然后选出播放量最小的/最大的视频把他放在数组的第一个位置
void selection_sort(int arr1[], int lenghh)
{
int i,j;
for (i = 0 ; i < lenghh - 1 ; i++)
{
int min = i;
for (j = i + 1; j < len; j++)
if (arr1[j] < arr1[min])
min = j;
swap(&arr1[min], &arr1[i]);
}
}
void swap(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
第二种方法是冒泡排序,从所有视频的第一个开始和后面的是视频播放量进行对比,两两对比,如果第一个比第二个大,则两个交换位置,如果相反则不动
void sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
第三种方法是插入排序,这是个很好理解的算法,从所有视频的第二个开始,将能够视频提取出来,和前面的所有视频播放量进行对比,每遇到比自己大的数,则那个大的数前进一位,如果遇到比自己小的,则把自己插入到那个视频前面
void sort(int arr[], int len){
int i,j,key;
for (i=1;i<len;i++){
key = arr[i];
j=i-1;
while((j>=0) && (arr[j]>key)) {
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
}
第四种方法是希尔排序,这是插入排序的进阶版本,先将整个待排序的记录序列分为若干个子子序列,分别直接进行插入排序,完成后再对整个序列进行排序
void sort(int arr[], int len) {
int gap, i, j;
int temp;
for (gap = len >> 1; gap > 0; gap >>= 1)
for (i = gap; i < len; i++) {
temp = arr[i];
for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)
arr[j + gap] = arr[j];
arr[j + gap] = temp;
}
}
第五种方法是快速排序,从数列中挑出一个数为基数,进行遍历数列,比这个基数小的排在左边,大的排在右边,然后递归的把小于大于的书进行排序
另外还有许许多多的排序算法,他们都各有各的优点和缺点,比如说归并排序,堆排序,桶排序
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917874/viewspace-2685848/ ,如需转载,请注明出处,否则将追究法律责任。