常见的排序算法
2021/7/12 20:05:56
本文主要是介绍常见的排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
选择排序
-- 把待排序的n个元素看作 有序部分和无序部分 ,依次选出第 i 小的元素
#include <iostream> #include<cstdio> using namespace std; int main(){ int a[5] = {4,5,1,3,2} ; int i,j ; for(i=0; i<5; ++i){ for(j=i+1;j<5;++j){ if(a[i]>a[j]){ // 如果找到更小的,交换之 int t = a[i] ; a[i] = a[j] ; a[j] = t ; } } } for(i=0; i < 5; ++i) printf("%d",a[i]); return 0 ; }
冒泡排序
-- 通过相邻元素之间的比较和交换使较小元素逐渐从后向前移动,就像水底的气泡一样逐渐向上冒。
#include<iostream> #include<cstdio> using namespace std ; int main(){ int a[6] = {1,4,2,3,6,5} ; int temp , n = 6 ; for(int i=0;i<n-1;i++){ // n个数, n-1轮冒泡 , 每一轮都将当前最小的数推到最前 for(int j= n-1 ; j>i ; j--){ if(a[j]<a[j-i]){ //交换两个数 temp = a[j]; a[j] = a[j-1]; a[j-i] = temp ; } } } // 打印排序结果 for(int i = 0 ; i<n ; i++){ printf("%d ",a[i]); } return 0 ; }
插入排序 --
把待排序的n个元素看作一个 有序部分和一个 无序排序部分 。 开始时有序部分只有1个元素,无序部分有n-1 个元素。排序过程中每次取出无序部分的第一个元素,将它插入到有序部分的合适位置,使有序部分元素个数增1,经过 n-1 次这样的处理后,有序部分有n个元素,排序结束。
#include<iostream> #include<cstdio> using namespace std ; int main(){ int a[] = {2,10,4,5,1,9} ; // 待排序元素用一个数组a表示,数组有n个元素 int temp , n = 6 , j ; for(int i = 1 ; i<n ;i++){ // i 表示插入次数,并进行 n-1 次插入 // 把待排序元素赋给 temp , temp 在 while 循环中并不改变 , 这样方便比较 ,并且它是要插入的元素 temp = a[i] ; j = i -1 ; // while 循环的作用是将比当前元素大的元素往后移动一个位置 while((j>=0)&&(temp<a[j])){ a[j+1] = a[j]; j--; // 顺序比较和移动,依次将元素后移动一个位置 } a[j+1] = temp ; // 元素后移后要插入的位置就空出了,找到该位置插入 } for(int i = 0 ;i<=5;i++){ printf("%d ", a[i]); } return 0 ; }
这篇关于常见的排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04百万架构师第六课:设计模式:策略模式及模板模式
- 2025-01-04百万架构师第七课:设计模式:装饰器模式及观察者模式
- 2025-01-04适用于企业管理的协作工具API推荐
- 2025-01-04挑战16:被限流的CPU
- 2025-01-03企业在选择工具时,如何评估其背后的技术团队
- 2025-01-03Angular中打造动态多彩标签组件的方法
- 2025-01-03Flask过时了吗?FastAPI才是未来?
- 2025-01-0311个每位开发者都应知道的免费实用网站
- 2025-01-03从REST到GraphQL:为什么以及我是如何完成转型的
- 2025-01-03掌握RAG:从单次问答到连续对话