直接选择排序

/**
 * 直接插入排序
 * @author TMAC-J
 * 默认按照从小到大的顺序排列
 * 思路:从所有数中选取一个最小的数,用来和第一个数交换,然后再从剩下的数中选取一个最小的数
 * 用来和第二个数交换,重复此操作
 *
 */
public class InsertSort {

private int[] array;

    public InsertSort(int[] array) {
        this.array = array;
    }
    /**
     * 按从小到大的顺序排列
     */
    public void calculate(){
        boolean isSwitch = false;
        int temp = 0;
        int which = 0;
        for(int i = 0;i<array.length-1;i++){
            for(int j = i;j<array.length-1;j++){
                if(array[j]>array[j+1]){
                    which = j+1;
                    isSwitch = true;
                }
            }
            if(isSwitch){
                temp = array[i];
                array[i] = array[which];
                array[which] = temp;
                isSwitch = false;
            }
        }
    }

    public static void main(String[] args) {
        int[] a = {10,9,8,7,6,5,4,3,2,1};
        InsertSort insertSort  = new InsertSort(a);
        insertSort.calculate();
        for(int i = 0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }

}
时间: 2024-08-09 21:59:56

直接选择排序的相关文章

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

选择排序 —— 排序算法系列

假设我们有如下一个数组: 使用选择排序算法对这个数组进行排序,步骤如下: 第 1 次 在下标0到6之间找到最小的数字,我们可以发现最小的数字是15,它在下标为4的位置上: 把下标4上面的数字跟下标0上面的数字互换,得到排序如下图的数组: 第 2 次 在下标1到6之间找到最小的数字,我们可以发现最小的数字是33,它在下标为5的位置上: 把下标5上面的数字跟下标1上面的数字互换,得到排序如下图的数组: 第 3 次 在下标2到6之间找到最小的数字,我们可以发现最小的数字是48,它在下标为5的位置上:

八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)

基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止. 简单选择排序的示例: 操作方法: 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换: 第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换: 以此类推..... 第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与

数据结构-选择排序

选择排序 1.选择排序 //堆排序,向下调整子函数 void AdjustDown(int *a, size_t size, size_t root) { size_t parent = root; size_t child = parent * 2 + 1; while (child < size) { //选择孩子节点中较大的节点,与父亲节点交换 if (child + 1 < size&&a[child + 1] > a[child]) { ++child; } i

C语言选择排序

#include <stdio.h> //选择排序 void selectSort(int a[],int len){          //外层循环控制趟数,每一趟把一个最小数放到没有排序的序列第一个位置     int min;//保存最小的数的下标     for (int i=0; i<len-1; i++) {                  //假设一个最小值         min = i;                  //找实际的最小值的下标         fo

简单选择排序的C++实现

简单选择排序(simple selection sort)的基本思想: 第一次选择所有数组元素中最小的放到第一个位置,第二次从剩下的n-1个元素中选择最小的放到第二个位置,以此类推,直到剩下一个元素,放到最后的位置上. 基本步骤: (1)首先通过n-1次比较,从n个数组元素中找出最小的,将它与a[0]交换——第1趟选择排序,结果最小的数被安置在a[0]位置上. (2)再通过n-2次比较,从剩下的n-1个数组元素中找出次小的,将它与a[1]交换——第二趟选择排序,结果次小的放在a[1]的位置上.

算法学习之排序算法(三)(选择排序法)

1.引言 选择排序工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 选择排序是不稳定的排序方法.选择排序是和冒泡排序差不多的一种排序.和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,才会发生交换.怎么交换呢?我们可以以下面一组数据作为测试: 2, 1, 5, 4, 9 第一次排序:1, 2, 5, 4, 9 第二次排序: 1, 2, 5, 4, 9 第三次排序: 1, 2, 4, 5, 9 第四次排序:

选择排序与python实现

1.算法思想 n 个元素,假设前 i 个元素已经排好序,从i+1到n个元素中选出最小的元素放在它在有序表中的最终位置上 2.代码实现 (1)非递归调用 def SelectionSort(A, n): for i in range(0, n-2): mini = i for j in range(i+1, n): if A[j] < A[mini]: i = j A[i],A[mini] = A[mini], A[i] #swap print A if __name__=='__main__':

选择排序的3种语言实现方法(C java python)

1.选择排序的思路是:遍历数组,第一遍找出所有成员的最小值,放到数组下标为0的位置,第二遍从剩余内容中,再次找出最小值,放到数组下标为1的位置,以此类推,遍历完成所有的数组内容,最后结果就是:数组是按照从小到大顺序进行排序的. 2.按照C语言.java.python的顺序,分别实现如下,在对应编译平台上都是编译通过的: C语言版本: #include <stdio.h> int main() { int i; int j; int temp; int origin[] = {2,1,4,3,5

基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)

冒泡排序 public static void bubbleSort(int[] arr){ int lgn = arr.length; for (int i = 0; i < lgn - 1; i++) { for (int j = 0; j < lgn - 1 - i; j++) { if(arr[j] > arr[j + 1]){ int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } 选择排序 publ