IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言实现八种排序(2) -> 正文阅读

[数据结构与算法]C语言实现八种排序(2)

2. 交换排序

?

2.1 冒泡排序

什么是冒泡排序?

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

代码实现如下:

void BubbleSort(int *a,int length){
	int i,j;
	int flag=1; //判断是否进行循环
	for(i=0;i<length-1&&flag==1;i++){
		for(j=0;j<length-1-i;j++){
			flag=0;
			if(a[j]>a[j+1]){
				flag=1;
				int temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}

但由于冒泡排序的时间复杂度过高,所有引申出了一种新型的排序 -- 快速排序(QuickSort)

这个名字就能彰显出其速率之快.

那这种排序是如何实现的?

代码如下:

//快速排序 
int Partition(int*a,int left,int right){
	int temp=a[left];//left下标作为基准数
	while(left<right){
		while(left<right&&a[right]>temp){
			right--;
		}
		if(left<right){
			a[left]=a[right];
		}
		while(left<right&&a[left]<temp){
			left++;
		}
		if(left<right){
			a[right]=a[left];
		}
	} 
	a[right]=temp;
	return right;
}
void QuickSort(int*a,int left,int right){
	if(left<right){
		int pivot=Partition(a,left,right);
		QuickSort(a,left,pivot-1);
		QuickSort(a,pivot+1,right);
	}
}

我们首先选择一个作为基准数,然后遍历整个数组(除了基准数),将小于基准数的放在它的左边,大于基准数的放在它的右边。

然后将基准数的左边和右边右看成一个数组,重复上述操作,直到每个数组只剩一个元素。


让我再水一期

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:07:49  更:2022-04-18 18:07:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:19:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码