美文网首页
数据结构之排序

数据结构之排序

作者: 教堂白鸽 | 来源:发表于2019-02-06 21:07 被阅读0次
数据逻辑结构:
集合
线性关系
树型结构
图状或网状结构
常用内部算法排序
  • 选择排序
    1.直接选择排序

原理


直接选择排序过程
直接选择排序过程

实现:

DataWrap.java来模拟待排序的数据

package com.alexanderbai.sort;

public class DataWrap implements Comparable<DataWrap> {
    int data;
    String flag;

    public DataWrap(int data,String flag) {
        this.data = data;
        this.flag=flag;
    }

    @Override
    public String toString() {
        return data + flag;
    }

    //根据data实例变量来决定两个dataWrap的大小
    @Override
    public int compareTo(DataWrap dataWrap) {
        return this.data > dataWrap.data ? 1 : (this.data == dataWrap.data ? 0 : -1);
    }
}

SelectSort.java进行具体的直接选择排序

package com.alexanderbai.sort;

/**
 * @Author AlexanderBai
 * @data 2019/2/6 20:38
 */
public class SelectSort {
    /**
     * 直接选择排序
     * @param dataWraps
     */
    public static void selectSort(DataWrap[] dataWraps) {
        System.out.println("开始排序");
        int arrayLength=dataWraps.length;
        for (int i = 0; i < dataWraps.length - 1; i++) {
            for (int j = i + 1; j < dataWraps.length; j++) {
                if (dataWraps[i].compareTo(dataWraps[j]) > 0) {
                    DataWrap temp = dataWraps[i];
                    dataWraps[i] = dataWraps[j];
                    dataWraps[j]=temp;
                }
            }
            System.out.println(java.util.Arrays.toString(dataWraps));
        }

    }
    /**
     * 直接选择排序(改进)
     * @param dataWraps
     */
    public static void selectSort2(DataWrap[] dataWraps) {
        System.out.println("开始排序");
        int arrayLength=dataWraps.length;
        for (int i = 0; i < dataWraps.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < dataWraps.length; j++) {
                if (dataWraps[i].compareTo(dataWraps[j]) > 0) {
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                DataWrap temp = dataWraps[i];
                dataWraps[i] = dataWraps[minIndex];
                dataWraps[minIndex]=temp;
            }
            System.out.println(java.util.Arrays.toString(dataWraps));
        }

    }

    public static void main(String[] args) {
        DataWrap[] dataWrap=new DataWrap[]{
                new DataWrap(10,""), new DataWrap(10,"*"),
                new DataWrap(-10,""),new DataWrap(-10,"*"),
                new DataWrap(100,""),new DataWrap(100,"*"),
                new DataWrap(12,""),new DataWrap(12,"*"),
        };
        System.out.println("排序前:\n"+java.util.Arrays.toString(dataWrap));
        //selectSort(dataWrap);//①
        selectSort2(dataWrap);//②
        System.out.println("排序后:\n"+java.util.Arrays.toString(dataWrap));
    }
}
运行结果一致: 运行结果 分析

2.堆排序

  • 交换排序
  • 插入排序
  • 归并排序
  • 桶排序
  • 基数排序

相关文章

  • 实现 Trie

    数据结构之Trie树Trie树:应用于统计和排序

  • 堆排序

    转载:图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 2018-06-30

    排序算法之堆排序 堆排序是利用堆的数据结构而设计的一种排序算法,堆排序是一种选择排序。可以利用数组的特点快速定位制...

  • 2019-02-23 普林斯顿大学 数据结构课程笔记

    一、 数据结构:基本数据结构:栈、队列、背包、优先队列 排序:排序、归并排序、堆排序、基数排序 查找:二叉查找树、...

  • 数据结构之----排序问题

    数据结构之----排序问题 一. 排序的概念 排序,是指将一个数据元素序列排列成为一个有序序列的过程排序可以分成比...

  • 数据结构与算法之美-28讲堆和堆排序

    数据结构与算法之美-28讲堆和堆排序 特别备注 本系列非原创,文章原文摘自极客时间-数据结构算法之美[https:...

  • 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 250MS Memory Limit: 65...

  • 数据结构与算法学习笔记之 适合大规模的数据排序

    数据结构与算法学习笔记之 适合大规模的数据排序 前言 在数据排序的算法中,不同数据规模应当使用合适的排序算法才能达...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

网友评论

      本文标题:数据结构之排序

      本文链接:https://www.haomeiwen.com/subject/yryisqtx.html