数据结构-简单排序
来源:互联网 发布:淘宝的差评多久会生效 编辑:程序博客网 时间:2024/05/17 05:58
简单排序:冒泡排序(O(N^2))、选择排序(O(N^2))、插入排序(O(N^2),对于基本有序的数组(O(N)))。
package com.jikefriend.arraysort;import java.util.Random;/** * 数据排序:冒泡排序,选择排序,插入排序 */public class ArraySort { private int[] a; private int nElems; public ArraySort(int max) { a = new int[max]; nElems = 0; } public void insert(int value) { a[nElems++] = value; } public void display() { for (int i = 0; i < nElems; i++) { System.out.print(a[i] + " "); } System.out.println(); } /** * 冒泡排序 * * 1、比较两个元素 * 2、如果左侧的元素大于右侧的元素,则交换两个元素 * 3、向右移动一个位置,重复步骤1和2,直至本轮最大的元素位于当前数组的最右侧 * 4、选定新的数组,将上轮的最右侧排除在外,重复以上步骤 */ public void bubbleSort() { for (int out = nElems - 1; out > 1; out--) { for (int in = 0; in < out; in++) { if (a[in] > a[out]) { int tmp = a[in]; a[in] = a[out]; a[out] = tmp; } } } } /** * 选择排序 * * 1、比较两个元素 * 2、如果左侧的元素小于右侧的元素,则记录左侧元素的位置为最小元素的位置 * 3、向右移动一个位置,重复步骤1和2,直至找出本轮最小元素的位置,并将该位置的元素与最左侧的元素交换 * 4、选定新的数组,将上轮的最左侧元素排除在外,重复以上步骤 */ public void selectSort() { for (int out = 0; out < nElems - 1; out++) { int min = out; for (int in = out + 1; in < nElems; in++) { if (a[in] < a[min]) { min = in; } } int tmp = a[out]; a[out] = a[min]; a[min] = tmp; } } /** * 插入排序 * * 1、选定一个元素,其左侧为有序数组 * 2、将改选定元素依次与左侧元素比较,将比其大的右移 * 3、当没有比其大的元素时,将其放入左侧空出的位置,结束此次插入 * 4、将之前选中元素的后一个元素作为新的带插入元素,重复上述1,2,3步的操作,直至将最右侧的元素插入左侧有序数组 */ public void insertSort() { int in; for (int out = 1; out < nElems; out++) { int tmp = a[out]; in = out; while (in > 0 && a[in -1] >= tmp) { a[in] = a[in -1]; --in; } a[in] = tmp; } } public static void main(String[] args) { final Random random = new Random(47); ArraySort arraySort = new ArraySort(20); for (int i = 0; i < 20; i++) { arraySort.insert(random.nextInt(40)); } arraySort.display();// arraySort.bubbleSort();// arraySort.selectSort(); arraySort.insertSort(); arraySort.display(); }}
0 0
- 数据结构-简单排序
- 数据结构----简单选择排序
- 数据结构简单选择排序
- 【数据结构】简单查找和排序
- 数据结构和算法------简单排序
- 重拾数据结构:简单排序
- 【数据结构】简单查找和排序
- 数据结构系列之简单排序
- 【C#数据结构】简单选择排序
- JAVA数据结构-数组&简单排序
- 数据结构 - 简单选择排序法
- 初学数据结构---简单选择排序
- 数据结构与算法-简单排序
- 数据结构-选择排序-简单选择排序
- [Java数据结构]简单排序之冒泡排序
- [Java数据结构]简单排序之选择排序
- [Java数据结构]简单排序之插入排序
- 重新温习数据结构二:简单排序
- Fail to load the JNI share library"..\jdk1.7.0\\bin\..\jre\bin\client\jvm.dll"解决方法
- C++拷贝构造函数(深拷贝,浅拷贝)
- django 自定义一个 装饰器
- 源码-JavaScript&jQuery交互式前端开发-第5章-文档对象模型-章节示例
- 活动的启动模式和intent.setFlags方法中的参数值含义
- 数据结构-简单排序
- <HeadFirst_HTML5> O'REILLY_Chap.10(完)_Web工作线程
- Mockplus演示和分享原型的8种方式
- AS编译遇到Error:Execution failed for task ':app:clean'. 或者task ':app:delete'
- Java程序猿之报告OKDO(32)
- 利用装饰器给python的函数加上类型限制
- has not been declared和does not name a type解决办法
- 【转】Eclipse启动参数解决占用CPU占用过高
- macOS上如何通过iCloud Drive便利地同步文稿