1.选择排序
將要排序的對象分作兩部份,一個是已排序的,一個是未排序的,從後端未排序部份選擇一個最小值,並放入前端已排序部份的最後一個,例如:
排序前:70 80 31 37 10 1 48 60 33 80
- [1] 80 31 37 10 70 48 60 33 80 選出最小值1
- [1 10] 31 37 80 70 48 60 33 80 選出最小值10
- [1 10 31] 37 80 70 48 60 33 80 選出最小值31
- [1 10 31 33] 80 70 48 60 37 80 ......
- [1 10 31 33 37] 70 48 60 80 80 ......
- [1 10 31 33 37 48] 70 60 80 80 ......
- [1 10 31 33 37 48 60] 70 80 80 ......
- [1 10 31 33 37 48 60 70] 80 80 ......
- [1 10 31 33 37 48 60 70 80] 80 ......
【摘自:http://202.193.64.35/dept7/acm/web/AlgorithmGossip/SelectionInsertionBubble.htm】
package com.bian.dp;
public class SelectSort {
/**
* @param args
*/
//选择排序 时间复杂度:O(n) 空间复杂度:data.length
//100,000 花费时间:35485 ms
public static void sort(int[] data){
for(int i=0;i<data.length;i++){
int lowIndex = i;
for(int j=data.length - 1;j>i;j--){
if(data[j] < data[lowIndex]) lowIndex = j;
}
swap(data,i,lowIndex);
}
}
public static void swap(int[] data,int i,int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] data = new int[100000];
for(int i=0;i<100000;i++){
data[i] = i;
}
long startTime = System.currentTimeMillis();
sort(data);
long endTime = System.currentTimeMillis();
System.out.println("Total time "+(endTime - startTime)+" ms");
}
}
分享到:
相关推荐
### 字符串排序方法 在JavaScript以及其他的编程语言中,字符串排序是一个常见的需求。无论是对字符串数组进行排序还是对特定的字符串内部字符进行排序,掌握正确的排序方法对于开发者来说至关重要。 #### 标题:...
为了优化和比较不同排序算法的效率,程序可能还包含了性能分析功能,如计时器来测量每种排序方法所需的时间,或者使用特定的性能指标如比较次数和交换次数。 总结来说,这个项目旨在培养编程者对基本数据结构、文件...
* 通用排序方法 * @param arr 需要排序的数组 * @param field 排序字段 值类型传null 单字段传string 多字段传数组[["field1", SortType], ["field2", SortType]] 可传属性名 方法名 * @param sortType 排序类型...
通过比较这些排序算法,我们可以看到,不同的排序方法在不同场景下有不同的优势。例如,快速排序通常在实际应用中表现最优,而归并排序则在稳定性方面有优势。在分析和实现这些排序算法时,还需要考虑数据的特性、...
在计算机科学领域,排序是一...理解并掌握这些排序方法对于编程和算法设计非常重要,能够帮助我们选择最适合特定问题的解决方案。在实际应用中,还需要考虑诸如内存限制、数据分布特点等因素,来决定选用哪种排序算法。
本资源包“各种排序方法汇总(含有源程序)”提供了多种经典的排序算法的源代码实现,包括堆排序、基数排序、快速排序、直接插入排序和直接选择排序。这些排序算法各有特点,适用于不同的场景,理解它们的原理和实现...
本项目名为"各种排序方法演示",显然旨在通过Java语言展示多种不同的排序算法。以下是这些排序算法的详细介绍: 1. **Bubble Sort(冒泡排序)** - `BubbleSortAlgorithm.java` 文件中实现的冒泡排序是一种简单的...
本文将深入探讨C语言中的排序方法,并提供相关的代码示例,帮助读者理解并掌握这些基本的编程技能。 一、选择排序(Selection Sort) 选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素...
考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如: “car” “carriage” “cats” “koala” 2.根据字符串的长度排序。例如: “car” “cats” “koala” “doggies” “carriage” 考拉...
**C语言排序方法详解及其优缺点** 在计算机科学中,排序是处理数据的重要步骤,它使得数据有序,便于检索和分析。C语言作为基础且强大的编程语言,提供了多种排序算法供程序员选择。以下是对几种常见C语言排序方法...
这些排序方法是计算机科学中的基础,对于理解和优化算法性能至关重要。 1. **冒泡排序**:冒泡排序是最简单的排序算法之一,通过重复遍历待排序的数列,比较相邻元素并根据需要交换它们的位置。这个过程会使得较大...
Java排序方法是编程中不可或缺的一部分,它涉及到一系列的算法,用于将数组或列表中的元素按照特定顺序排列。这里我们将深入探讨几种常见的排序方法,包括直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序...
本文将深入探讨Java中的各种排序方法以及它们的改良策略。首先,我们来看看几种基础的排序算法,然后讨论如何通过优化来提高这些算法的性能。 1. **冒泡排序**(Bubble Sort): 冒泡排序是最基础的排序算法之一,...
这里我们将详细讨论几种经典的排序方法,包括选择排序、直接插入排序和冒泡排序。 首先,我们来看选择排序。选择排序是一种简单直观的排序算法,它的基本思想是在每一轮遍历中找到剩余元素中的最小(或最大)值,...
面向对象排序方法是一种在编程中实现排序算法时采用的基于面向对象编程思想的技术。面向对象编程(OOP)的核心概念包括封装、继承、多态和抽象。在这篇讨论中,我们将深入探讨如何利用这些概念来设计和实现排序算法...
本篇将详细讲解三种常见的排序方法:冒泡排序、插入排序和选择排序。 **冒泡排序(Bubble Sort)** 冒泡排序是最基础的排序算法之一,它通过重复遍历数组,比较相邻元素并交换(如果需要)来实现排序。其工作原理...
【C语言常用排序方法】 在C语言中,排序是编程中常见的任务,涉及到各种不同的算法。以下是几种常见的排序方法: 1. **稳定排序与非稳定排序** - 稳定排序:例如直接插入排序、冒泡排序和归并排序。它们在处理...
几种常见的排序方法 1. 选择排序法基本思想: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 2.插入排序(Insertion Sort)的基本思想是...
总结各类排序方法。排序问题一直是计算机技术研究的重要问题,排序算法的好坏直接影响程序的执行速度和辅助存储空间的占有量。此代码将详细分析常见的各种排序算法,并从时间复杂度、空间复杂度、适用情况等多个方面...
交换排序 选择排序 冒泡排序 插入排序