排序算法的介绍以及基本案例

举报
周小末天天开心 发表于 2022/12/31 16:35:34 2022/12/31
1k+ 0 0
【摘要】 排序算法排序算法介绍排序也称为排序算法,排序是将一组数据,依照指定的顺序进行排序的过程。排序的分类(1)内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序(2)外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序(3)常见的内部排序算法分类:内部排序主要分为:插入排序、选择排序、交换排序、归并排序、基数排序算法的时间复杂度时间频度时间频度是一个算...

排序算法

排序算法介绍

排序也称为排序算法,排序是将一组数据,依照指定的顺序进行排序的过程。

排序的分类

(1)内部排序:

指将需要处理的所有数据都加载到内部存储器(内存)中进行排序

(2)外部排序法:

数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序

(3)常见的内部排序算法分类:

内部排序主要分为:插入排序、选择排序、交换排序、归并排序、基数排序

算法的时间复杂度

时间频度

时间频度是一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费的时间就多。

一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)

时间复杂度

(1)一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数

f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函

数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。

(2)T(n)不同,但时间复杂度可能相同。

(3)计算时间复杂度的方法:

1)用常数1代替运行时间中的所有加法常数

2)修改后的运行次数函数中,只保留最高阶项

3)去除最高阶项的系数

(4)常见的时间复杂度

1)常数阶O(1)

2)对数阶O(log2n)

3)线性阶O(n)

4)线性对数阶O(nlog2n)

5)平方阶O(n^2)

6)立方阶O(n^3)

7)k次方阶O(n^k)

8)指数阶O(2^n)

使用冒泡法进行数据排序

介绍

冒泡排序的基本思想是通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则

进行交换,使值较大的元素逐渐从前向后移。

优化

因为排序的过程中,各元素不断j接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序

过程中设置一个表示flag判断元素是否进行过交换。从而减少不必要的比较。

// 将五个无序的数:24,69,80,57,13 
// 使用冒泡排序法将其排成一个 从小到大 的有序数列
 
public class BubbleSort {
	public static void main(String[] args) {
        int[] arr = {24 , 69 , 80 , 57 , 13};
		int temp; //用于辅助变量交换
 
		// 4就是 arr.length - 1
		for(int i = 0; i < arr.length - 1; i++) {// 外层循环四次
 
			for(int j = 0; j < arr.length -1 -i; j++) { // 四次比较 -> 三次 -> 二次 -> 一次
			
			// 如果后面的数大于前面的数就进行交换
			if(arr[j] > arr[j + 1]) {
				temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;
				}
			}
        // 每一轮循环可以确定一个数的位置,比如第一轮排序确定最大的数,第二轮排序
        //确定第二大的数,以此类推
 
			System.out.println("\n ===第" + (i + 1) + "轮");
			for(int j = 0; j < arr.length ; j++) {
				System.out.print(arr[j] + "\t");
				}
			}
		}
	}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。