7.3交换类排序

news/2024/5/19 22:17:13 标签: 交换类排序, 冒泡排序, 快速排序

7.3交换类排序

定义:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置。

冒泡排序快速排序两种。

冒泡排序

算法流程:

[外链图片转存失败(img-toRwtOqy-1567435479235)(assets/1567430208954.png)]

void BubbleSort(ElemType A[],int n){
    for(int i=0;i<n-1;i++){
        bool flag =false; //tips当整个序列都有序时,标志位不发生改变,这是已经排好了
        for(j=n-1;j>i;j--){
			if(A[j-1].key>A[j].key){
                ElemType temp =A[j-1].key;
                A[j-1]=A[j].key;
                A[j].key=temp;
                flag=true; //发生数据变换
            }
            if(flag==false)
                return; //本趟遍历之后没有发生变换
        }
    }
}

算法分析:

[外链图片转存失败(img-Kea7lvBQ-1567435479236)(assets/1567430616696.png)]

稳定性:当两个关键字,if判断条件不成立,所以不会发生数据移动,是稳定性。

快速排序

是一种基于分治法的排序方法。

分治法:

第一步首先将原问题分解成若干个子问题,这个子问题只是原问题较小规模的实例。第二步将解决这些问题,递归的求解各子问题。递归的边界就是问题规模足够小的时候,可以直接求解。

快速排序

[外链图片转存失败(img-KdblAHiq-1567435479237)(assets/1567433838687.png)]

第一遍将所有的元素排在 枢轴两侧:

int Paritition(ElemType A[],int low,int high){
    ElemType pivot=A[low];  //第一个元素作为枢轴
    while(low<high){
        while(low<high&&A[high]>=pivot)
            --hihg;  //从末尾往前找到第一个比枢轴小的元素
        A[low]=A[high];
        while(low<high&&A[low]<=pivot)
            ++low;
        A[high]=A[low];
    }
    A[low] =pivot;
    return low;
}

内循环low<high的作用:避免完全顺序的序列出现数组下溢;

[外链图片转存失败(img-yOPxe59K-1567435479238)(assets/1567434864025.png)]

void QuickSort(ElemType A[],int low,int hihg){
	if(low<high){
        int pivotpos=Partition(A,low,high);
        QuickSort(A,low, pivotpos-1);
        QuickSort(A,pivotpos+1, high);
    }
}

时间复杂度:

[外链图片转存失败(img-UCV4QAK5-1567435479239)(assets/1567435227217.png)]

[外链图片转存失败(img-5DudtNlg-1567435479240)(assets/1567435281613.png)]

[外链图片转存失败(img-yzl4lnW8-1567435479241)(assets/1567435236277.png)]

[外链图片转存失败(img-dPEfTjXE-1567435479242)(assets/1567435303807.png)]

空间复杂度:

[外链图片转存失败(img-1UTlYBoJ-1567435479242)(assets/1567435358065.png)]
稳定性:
[外链图片转存失败(img-31ajvKfg-1567435479243)(assets/1567435373381.png)]


http://www.niftyadmin.cn/n/1858866.html

相关文章

linux 文本处理

linux 文本处理 tr,awk,sed 一&#xff1a;tr 1.大小写转换 cat file | tr [a-z] [A-Z] > new_file&#xff08;大写 --> 小写&#xff09;cat file | tr [A-Z] [a-z] > new_file2.删除空行 cat file | tr -s "\n" > new_file二&#xff1a;awk: gsub …

nginx模块开发

http://www.codinglabs.org/html/intro-of-nginx-module-development.htmlhttp://www.nginx.com.cn/?cat80http://wiki.nginx.org/3rdPartyModulesPS http://0xc0dec.org/2010/11/23/nginx-directive-is-duplicate/—————— 关于 设定配置文件为uint 的情况下&#xff0c;…

7.4选择类排序

7.4选择类排序 算法思想&#xff1a;每一趟(例如第i趟&#xff09;在后面n-i2(i1,2,3,…,n-1)个待排序的元素中选取关键字最小的元素&#xff0c;作为有序子序列的第i个元素&#xff0c;直到第n-1趟做完&#xff0c;待排序的元素只剩一个&#xff0c;就不用再选了。 包括简单…

别再抱怨复杂的垃圾分类了,全国 53 个沿海城市,可能都要面临这个问题

原创&#xff1a;HyperAI超神经 关键词&#xff1a;海洋塑料垃圾 机器学习 图像识别 人类产生的废弃物有意无意地漂进大海&#xff0c;而这些废弃物中&#xff0c;许多类型的塑料无法分解&#xff0c;严重威胁着鱼类、海鸟、海洋爬行动物、海洋哺乳动物&#xff0c;以及船只和沿…

regexec

http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.htmlhttp://linux.die.net/man/3/regexecPS 以上两个链接才是王道&#xff0c;国内的资料&#xff0c;包括本文最后保存的链接同样是错误的。Name regcomp, regexec, regerror, regfree - POSIX regex func…

R ARIMA 时间序列预测

An R Time Series Tutorial http://www.stat.pitt.edu/stoffer/tsa2/R_time_series_quick_fix.htm http://www.stat.pitt.edu/stoffer/tsa2/Examples.htmhttp://stat.ethz.ch/R-manual/R-patched/library/stats/html/predict.arima.html相关toolkits http://gretl.sourceforg…

用算法远离食物中毒,让这个夏天更安心

By 超神经场景描述&#xff1a;夏天里&#xff0c;经常有食物中毒的事件发生&#xff0c;严重的还会对生命造成威胁。对于餐厅的食品安全问题&#xff0c;有一些研究者们&#xff0c;动用自然语言处理、计算机视觉等机器学习技术&#xff0c;帮助卫生部门发现潜在的食品安全隐患…

隐马尔可夫(HMM)模型

http://www.52nlp.cn/hmm-learn-best-practices-one-introduction 隐马尔可夫(HMM)模型的各种语言实现 http://sjtutmz.blog.163.com/blog/static/988886602011863723740/隐马尔科夫模型HMM自学http://hi.baidu.com/soulingm/blog/item/51345bd9820a73d5b7fd48a6.html