首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

选择排序不排序Java

选择排序是一种简单但低效的排序算法,用于对数组或列表进行排序。它的基本思想是每次从未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。该过程不断重复,直到整个数组或列表排序完成。

选择排序的步骤如下:

  1. 遍历数组或列表,找到未排序部分中的最小(或最大)元素。
  2. 将最小(或最大)元素与未排序部分的第一个元素交换位置,将其放置在已排序部分的末尾。
  3. 将已排序部分的末尾指针向后移动一位,将未排序部分的起始指针向后移动一位。
  4. 重复步骤1-3,直到未排序部分为空。

选择排序的时间复杂度为O(n^2),其中n是数组或列表的长度。由于其每次只交换一次元素,因此相对于其他排序算法,选择排序的交换次数较少。然而,由于每次只能确定一个元素的位置,因此其比较次数较多,导致效率较低。

选择排序适用于小型数据集或部分有序的数据集。它的优势在于实现简单,代码易于理解和实现。然而,在大型数据集上,选择排序的性能较差,不推荐在此场景下使用。

腾讯云提供了多种云计算相关产品,如云服务器、云数据库、云存储等,可以满足开发者在云计算领域的需求。具体产品介绍和链接地址可参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

排序算法之选择排序-java

选择排序 1.1 选择排序的基本介绍 选择排序类似于冒泡排序,均属于内排,也可以看做是对冒泡排序的优化。因为冒泡排序是比较相邻的两个值,然后直接交换。...而选择排序是找到一个最大值或者最小值之后,再进行交换。...1.2 选择排序思想 第一次从 arr[0] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[0] 交换;第二次从 arr[1] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[...1] 交换; 第二次从 arr[2] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[2] 交换; 依次类推。...1.3 选择排序的时间复杂度和空间复杂度等 算法名称 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 选择排序 O(n^2) O(n) O(n^2) O(1) 稳定 2.

83720
  • 排序——选择排序

    选择排序 --- 简单选择排序 基本思想 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 算法实现 void SelectSort(SqList &L){ // 对记录序列...L.length]作简单选择排序 for(i = 1; i <= L.length; i++){ // 选择第 i 小的记录,并交换到位 k = i; for(j = i + 1; j <...k]); // 交换 } } 算法分析 时间复杂度:O(n^2) - 移动次数: - 最好情况:0 - 最坏情况:3(n-1) 空间复杂度: O(1) 稳定性: 稳定 --- 树形选择排序...算法分析 含有n个叶子节点的完全二叉树的深度为log2 n+1,则选择排序的每一趟都需作log2n次比较,排序的时间复杂度O(nlog2n)。...改进:简单选择排序没有利用上次选择的结果,是造成速度满的重要原因。如果,能够加以改进,将会提高排序的速度。

    901125

    Java常见排序算法详解——选择排序

    转载请注明出处:https://www.jianshu.com/p/43981d777731 选择排序Simple Selection Sort 概念: 是一种简单直观的排序算法。...从数组当中,选择出最小的那个元素放在第一个位置。 如果没有比当前还小的元素,那么就在当前的位置不变。 继续对越来越少的数据进行比较、交换操作,直到没有可比较的数据为止,排序完成。...选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。...选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的序列进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。...代码: Java和Kotlin代码我均放在了GitHub上,欢迎Star!

    63100

    冒泡排序-选择排序-插入排序-快速排序java版实现)

    排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。...j + 1]; arr[j + 1] = temp; } } } } } 二、选择排序...1、概念 快速排序要比上面几个排序难度大些了,排序的效率也更高,实现方式就是在数组中找一个基准数,将大于基准数的值放到基准数右边,小于的放到左边,然后将小于基准数的左边序列再次选择一个基准数...,大于基准数的右边序列也再次选择一个基准数,循环执行上述操作,只到子序列都剩一个数字时,停止循环,此时排序成功。...java实现

    26320

    选择排序(简单选择排序、堆排序

    选择排序 选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。...简单选择排序 概念 假设排序表为L[1…N],,第i趟排序即从L[1…N]中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可以使得整个排序表有序...= i) swap(A[i],A[min]); } } 堆排序 概念 堆排序要结合顺序存储的完全二叉树的特性进行学习。...堆排序的思路很简单:首先将存放在L[1…N]中的N个元素建成初始堆,由于堆本身的特点(以大根堆为例),堆顶元素就是最大值。...i;//修改k值,以便继续向下筛选 } } A[k] = A[0]; //被筛选结点的值放入最终位置 } void Heap_Sort(ElemType A[],int len) {//堆排序

    55910

    排序算法Java代码实现(一)—— 选择排序

    本片分为两部分代码: 常用方法封装 排序算法里需要频繁使用 交换数组中两数位置 的操作,另外,为了方便我打印数组查看结果,我封装一个 ArrayBase.java基类,用来实现swap...方法和printArray方法; 选择排序算法 (一)ArrayBase.java /** * */ package com.cherish.SortingAlgorithm; /** * @...(代码继承ArrayBase基类,swap和printArray方法直接用) 排序思想: 从数组中选择最小元素,将它与数组的第一个元素交换位置。...再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。 不断进行这样的操作,直到将整个数组排序。...* 再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。 * 不断进行这样的操作,直到将整个数组排序

    73040

    java学习之数组元素排序,冒泡排序选择排序

    java学习之数组元素排序 选择排序 *返回值类型 void *参数列表 int[] arr * 分析:选择排序 * 第一次arr[0]与arr[1-4]比较,总共比较4次 * 第二次arr[1]与arr...[2-4]比较,总共比较3次 * 第三次arr[2]与arr[3-4]比较,总共比较2次 * 第四次arr[3]与arr[4]比较,总共比较1次 冒泡排序 返回值类型void * 参数列表 int[]...arr * 分析:冒泡排序 * 第一次比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3],arr[3]和arr[4]比较了4次 * 第二次比较arr[0]和arr[1...selectSort(arr);//选择排序 print(arr); } /* *返回值类型 void *参数列表 int[] arr * * 分析:选择排序 *...i]; arr[i] = arr[j]; arr[j] = temp;*/ swap(arr, i , j); } } } } /**冒泡排序

    64740

    排序算法---选择排序

    排序是我们学习算法过程中重要且基础的一环,例如对下面的排序问题,我们应该怎么做呢?...选择排序思想和实现思路 提到排序问题,很容易想到的思路就是找出来所有数据中最大(或最小)的元素,放在一个新列表的第一位,然后再在剩下的元素中找出最大(或最小)的元素,放在新列表的第二位,以此类推......这就是选择排序(selection sort)的算法思想。 上图就是选择排序算法思想,但一个算法的实现往往不能通过一个简单的思想就搞定(这就是思想与现实的距离,哈哈~)。...& os, Student& s) { os << s.name << " " << s.score << endl; return os; } }; // 选择排序...auto student : students) { cout.width(8); // 设置数据宽度 cout << student; } // 选择排序

    68510

    排序算法-选择排序

    算法简介 选择排序就是找到数组中最小元素将其和数组第一个元素交换位置,然后在剩下的元素中找到最小元素并将其与数组第二个元素进行交换,以此类推,直至整个数组排序结束。...算法描述 找到数组中最小元素并将其和数组第一个元素交换位置 在剩下的元素中找到最小元素并将其与数组第二个元素交换,直至整个数组排序 ?...代码实现 /** * 选择 * * @param array */ private static void selectionSort(int[]...由于每次都是选取未排序序列R中的最小元素 a 与 R 中的第一个元素交换,很可能破坏了元素间的相对位置,因此选择排序是不稳定的。...排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 选择排序 \(O(n^2)\) \(O(n^2)\) \(O(n^2)\) \(O(1)\) 不稳定

    1.6K40

    排序算法】选择排序

    1.基本介绍 选择排序基本思想:它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。...2.数据演示 第0次排序:8 5 2 7 3 4 第1次排序:2 5 8 7 3 4 第2次排序:2 3 8 7 5 4 第3次排序:2 3 4 7 5...8 第4次排序:2 3 4 5 7 8 第5次排序:2 3 4 5 7 8 例如在第一次排序中:第一个数8,与后面最小的数交换位置,从而确定最小值,在第2次排序中,已经确定了第一个值...(arr)); } } 小编这里当交换位置时minindex才不等于原来的值,所以才输出排序次数以及排序结果,index只是为了记录排序的次数 演示结果: 第1次排序后的队列为[2, 5,...,在100000个随机数据中只用了3秒,比小编上期的冒泡排序少了很多(冒泡排序http://t.csdnimg.cn/9mqj4) 7.总结 选择排序的时间复杂度为On(n^2) ,空间复杂度为O(1)

    7410

    排序算法】冒泡排序选择排序

    冒泡排序 思想 冒泡排序,又被称为气泡排序或泡沫排序。...它会遍历若干次要排序的数列,每次遍历时,会从前往后一次比较相邻两个数的大小,如果前者比后者大,则交换它们的位置,如果后者比前者大,则继续遍历。这样,一次遍历之后,数组中最大的元素就会处于数组的末尾。...bubble_sort(int* arr,int sz) { int i = 0; int flag = 1; for (i = 0; i < sz-1; i++) { int j = 0; //一趟冒泡排序之后...if (flag == 1)//如果已经有序,提前跳出循环 break; } } 算法分析 时间复杂度:最坏O(N^2),最好O(N),平均时间复杂度O(N^2) 空间复杂度:O(1) 选择排序...思想 首先在未排序的数组中找到最大或者最小的元素,然后将其放在起始位置,同理,在未排序的数组中继续寻找最大或最小的数,将其放在已排序(每次找到的元素构成的数列)的数列的末尾。

    15510
    领券