ITPub博客

首页 > 应用开发 > C/C++ > 排序算法

排序算法

原创 C/C++ 作者:山有木xi 时间:2020-04-13 16:17:30 0 删除 编辑

假设你是一个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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle OCA(Java),IBM高级工程师认证,中国软件行业人才(高级c语言),高级Android工程师,对数据库并发与性能调优也有一定了解

注册时间:2019-04-25

  • 博文量
    147
  • 访问量
    390778