选择排序
选择排序 观其名,识其意。和冒泡一样通过嵌套循环将数组所有对象扫描一遍,选择最小(最大)的对象,
将其置换至对应的位置(a[0]/a[length-1]).
这里可以将排序的过程看做两个步骤。
1 循环扫描数组,选择当前最小的对象并且记录其位置。
2 将最小的对象置换至对应的位置上。
class Sort{
private long[] a;
private int nElement;
public Sort(long[] array){
this.a = array;
}
public static void main(String[] args) {
long[] array = new long[]{5,3,1,7,9,2,0};
Sort b = new Sort(array);
b.selectSort();
System.out.println(b);
}
//选择排序
public void selectSort(){
int out,in,low;
int step = 0;
for(out = 0; out < a.length; out++){
low = out;//low 记录当前最小对象的位置。初始化指向起始的比较对象,
//同冒泡一样,遍历比较数组中所有的对象。并且记录最小当前
//最小对象的位置。
for(in = out + 1; in < a.length; in++){
if(a[low] > a[in]){
low = in;
}
}
//将当前对象对象置换至当前排序中对应的位置。
if(low != out){
long temp = a[out];
a[out] = a[low];
a[low] = temp;
step ++;
}
}
System.out.println("step = "+step);
}
public String toString(){
StringBuilder b = new StringBuilder();
for(long l : a){
b.append(l);
b.append(",");
}
return b.toString();
}
}
选择排序同样进行了 21 次比较(N*(N-1)/ 2) 但只对数组进行了5 次操作,
(同数组,冒泡操作了13次)。时间一样,效率高于冒泡排序
分享到:
相关推荐
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
冒泡排序是最简单的排序算法之一,它通过重复遍历待排序的列表,比较相邻元素并交换位置,直到没有任何一对数字需要比较。C++实现冒泡排序如下: ```cpp void bubbleSort(int arr[], int n) { for (int i = 0; i ;...
在本文中,我们将深入探讨四种常见的内部排序方法:插入排序、快速排序、选择排序以及再次提到的选择排序。这四种排序方法在不同的场景下各有优劣,理解它们的工作原理和性能特性对于优化算法至关重要。 **1. 插入...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
2. 冒泡排序:是最简单的排序算法之一,通过不断交换相邻位置的元素来逐渐达到排序的目的。每一轮遍历都能确保最大(或最小)的元素被放置到正确的位置,重复这个过程直到整个数组排序完成。 3. 选择排序:每次从未...
冒泡排序和选择排序是两种基础的排序算法,在计算机科学中有着广泛的应用,尤其是在学习编程语言如C语言时,理解并能实现这两种排序算法是非常重要的。下面将详细讲解这两种排序方法以及它们在C语言中的实现。 **...
本主题涵盖了六种经典的排序算法:希尔排序、堆排序、快速排序、简单选择排序、插入排序和冒泡排序。这些算法各有特点,适用于不同的场景,下面将逐一详细介绍。 1. **希尔排序**:希尔排序是由Donald Shell提出的...
在编程领域,排序是基础且重要的操作之一,用于组织数据并优化后续的处理。本项目涵盖了五种经典的排序算法:快速排序、堆排序、归并排序、插入排序和选择排序。接下来,我们将深入探讨这些算法的原理、实现及性能...
本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...
### Java学习中的各大排序之选择排序 在Java学习过程中,数据结构与算法是不可或缺的一部分,它们不仅是编程的基础,也是提高程序效率的关键。本篇文章将深入探讨“选择排序”这一经典排序算法,并通过一个示例代码...
1. **直接插入排序**:直接插入排序是最基础的排序算法之一。它的工作原理是将待排序的元素逐个与已排序的部分进行比较,找到合适的位置插入。这种算法对于小规模或部分有序的数据集表现较好,但对于大规模无序数据...
冒泡排序和选择排序是两种基础的排序算法,它们在计算机科学中有着广泛的应用,尤其在教学和理解排序原理时非常关键。这两种算法虽然简单,但在特定情况下可以通过优化提高效率。 首先,我们来详细探讨冒泡排序。...
直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...
冒泡排序是最简单的排序算法之一,通过比较相邻元素并交换位置来实现排序。每一轮遍历会确保最大的元素“冒”到数组的末尾。这个过程会重复,直到所有元素都排好序。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1...
下面将详细讲解这7种排序算法:快速排序、归并排序、插入排序、选择排序、冒泡排序、堆排序以及希尔排序。 1. **快速排序**:由C.A.R. Hoare提出的,采用分治策略。基本思想是选取一个基准元素,通过一趟排序将待...
冒泡排序 简单选择排序 c语言基础 排序算法 数组操作 排序算法实验 简单的c语言程序 排序算法输出
选择排序之简单选择排序.cpp
交换排序 选择排序 冒泡排序 插入排序
这四种排序算法都是基础排序算法的重要组成部分,其中冒泡排序和选择排序的时间复杂度较高(均为O(n^2)),而插入排序适用于部分有序的数组。希尔排序则是插入排序的一种优化版本,通过增量分组的方式提高了排序效率...
- 选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 - 在C++中,实现选择排序通常涉及两个循环...