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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 十大排序算法思想 -> 正文阅读

[数据结构与算法]十大排序算法思想

冒泡排序(Bubble Sort)

思想(升序排序):

比较相邻的两个元素。如果第一个元素比第二个元素大,就交换两个元素的位置,重复这项操作,直至没有再需要交换的元素,说明排序完成

代码实现

public void BubbleSort(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length-1; j++) {
				if(arr[j]>arr[j+1]) {
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
	}

例子:  arr={5,2,15,31,10,8,20,1}
第一趟:2,5,15,10,8,20,1,31
第二趟:2,5,10,8,15,1,20,31
第三趟:2,5,8,10,1,15,20,31
第四趟:2,5,8,1,10,15,20,31
第五趟:2,5,1,8,10,15,20,31
第六趟:2,1,5,8,10,15,20,31
第七趟:1,2,5,8,10,15,20,31
排序完成:
    升序数组为:1,2,5,8,10,15,20,31

选择排序(Selection Sort)

思想:

? ? ? ?首先在没有排序的数组中找到(选择)最大(或最小)的那个元素?,将其放到排序数组的起始位置,然后又从没有排序的数组中寻找出最小(或最大)的那个元素,将其插入到排序数组末尾的位置,以此类推,直至排序完成

代码实现

    //选择排序
	public static void SelectionSort(int arr[]) {
		int maxIndex;//定义最大元素的下标
		int temp;//定义一个中间变量
		for (int i = 0; i < arr.length-1; i++) {
			maxIndex=i;//假设第一个元素为最大元素
			for (int j = i+1; j < arr.length; j++) {
				if (arr[j]>arr[maxIndex]) {
					//如果找到比最大元素还大的数,就交换两个下标的值
					maxIndex=j;
				}
			}
			temp =arr[i];
			arr[i]=arr[maxIndex];
			arr[maxIndex]=temp;
		}
	}


int []arr={5,2,15,31,10,8,20,1};
第1趟[31, 2, 15, 5, 10, 8, 20, 1]
第2趟[31, 20, 15, 5, 10, 8, 2, 1]
第3趟[31, 20, 15, 5, 10, 8, 2, 1]
第4趟[31, 20, 15, 10, 5, 8, 2, 1]
第5趟[31, 20, 15, 10, 8, 5, 2, 1]
第6趟[31, 20, 15, 10, 8, 5, 2, 1]
第7趟[31, 20, 15, 10, 8, 5, 2, 1]
    
排序完成:[31, 20, 15, 10, 8, 5, 2, 1]

插入排序(Insertion Sort)

思想:

? ? ? ? 通过构建一个有序数组,对未排序的数据,在已经排序好的数组中从后往前扫,找到相应的位置并将其插入。

代码实现

//插入排序
	public static void InsertionSort(int arr[]) {
		int preIndex;
		int temp;
		for (int i = 0; i < arr.length; i++) {
			preIndex=i-1;
			temp=arr[i];//将第i个下标的元素赋值给temp
			while (preIndex>=0 && arr[preIndex]>temp) {
				arr[preIndex+1]=arr[preIndex];
				preIndex--;
			}
			arr[preIndex+1]=temp;
			System.out.println("第"+i+"趟"+Arrays.toString(arr));
		}
	}

int []arr={5,2,15,31,10,8,20,1};
第1趟[5, 2, 15, 31, 10, 8, 20, 1]
第2趟[2, 5, 15, 31, 10, 8, 20, 1]
第3趟[2, 5, 15, 31, 10, 8, 20, 1]
第4趟[2, 5, 15, 31, 10, 8, 20, 1]
第5趟[2, 5, 10, 15, 31, 8, 20, 1]
第6趟[2, 5, 8, 10, 15, 31, 20, 1]
第7趟[2, 5, 8, 10, 15, 20, 31, 1]
第8趟[1, 2, 5, 8, 10, 15, 20, 31]

排序完成:[1, 2, 5, 8, 10, 15, 20, 31]


第一趟:将元素5作为已经排序好的序列{5}
第二趟:找到2,比5小,将2插入到5的前面{2,5}
第三趟:找到15和{2,5}比较,插入到后边{2,5,15}
第四趟:找到31,和{2,5,15}比较,插入到后边,{2,5,15,31}
第五趟:找到10,和{2,5,15,31}比较,插入到15的前面:{2,5,10,15,31}
第六趟:找到8,和{2,5,10,15,31}比较,插入到5后边,10前边:{{2,5,8,10,15,31}}
第七趟:找20,和{2,5,8,10,15,31}比较,插入到15后边,30前边:{2,5,8,10,15,20,31}
第七趟:找到1,和{2,5,8,10,15,20,31}比较,1比2小,插入到2的前边:{1,2,5,8,10,15,20,31}
第八趟:排序完成{1,2,5,8,10,15,20,31}

希尔排序(Shell Sort)

思想:希尔排序是插入排序的改进版,跟插入排序差不多,不同之处在于,希尔排序优先选择距离比较远的元素来比较啊。希尔排序又称为缩小增量排序、

快速排序(Quick Sort)

归并排序(Merge Sort)

堆排序(Heap Sort)

计数排序(Counting Sort)

桶排序(Bucket Sort)

基数排序(Radix Sort)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:27:04  更:2021-09-18 10:27:39 
 
开发: 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年5日历 -2024/5/17 12:12:22-

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