zoukankan      html  css  js  c++  java
  • 排序算法总结

    1.冒泡排序

    基本思想:两数比较,较大数后移,较小数前移
    平均时间复杂度:O(n^2)
    代码实现:

    void BubbleSort(int arr[],int len) {
    	for (int i = 0; i < len - 1; i++) {
    		for (int j = 0; j < len - 1 - i; j++) {
    			if (arr[j] > arr[j + 1]) {
    				swap (arr[j], arr[j + 1]);
    			}
    		}
    	}
    }
    

    存在问题:数组有序后,冒泡排序可能会继续下一轮循环,直到满足退出条件
    优化方案:若本轮没有发生两数交换,则退出循环

    void BubbleSort(int arr[],int len) {
    	int flag;
    	for (int i = 0; i < len - 1; i++) {
    		flag = 0
    		for (int j = 0; j < len - 1 - i; j++) {
    			if (arr[j] > arr[j + 1]) {
    				flag = 1;/*发生两数交换,flag 置为 1*/
    				swap (arr[j], arr[j + 1]);
    			}
    		}
    		if (flag == 0) {
    			break;
    		}
    	}
    }
    

    2.选择排序

    基本思想:第 i 次遍历数组,找出最小的数值与第 i 个元素交换
    平均时间复杂度:O(n^2)
    代码实现:

    void sort(int a[],int n){
    	int i,j,min,t;
    	for(i=0;i<n-1;i++){
    		min=i;
    		for(j=i+1;j<n;j++){
    			if(a[j]<a[min]){
    				min=j;
    			}
    		}
    		if(min!=i){
    			t=a[i];
    			a[i]=a[min];
    			a[min]=t;
    		}
    	}
    }
    

    参考资料:排序算法总结

  • 相关阅读:
    docker-排除故障
    python的标识符
    python的数据类型
    python的数与字符串
    场景法
    正交试验法
    错误推测法
    决策表法
    因果图法
    python基础--用python执行系统命令
  • 原文地址:https://www.cnblogs.com/dump16/p/12439200.html
Copyright © 2011-2022 走看看