10、直接选择排序和反转排序

package com.xxx.xxx;
/**
 * 1.直接选择排序
 * 2.反转排序
 * @author Administrator
 *
 */
public class demo11 {

    //直接选择排序
    /**
     * 直接选择排序比冒泡排序快一些
     * 基本思想:将指定排序位置与其他数组元素分别对比,满足就交换
     * (注意:这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换)
     * 与冒泡排序相比,直接选择排序的交换次数要少很多
     */
    public static void main(String[] args) {
        //直接选择排序
        int index;
        int[] array = {63,4,24,1,3,15};    //创建数组是乱序的

        for(int i=1;i<=array.length;i++){ //开始为 1 ,判断是 小于等于
            index = 0;
            for(int j = 1;j<= array.length-i;j++){    //开始为 1, 判断是 小于等于, 长度-1
                if(array[j] > array[index]){    // if判断
                    index = j;
                }
            }
            //交换在位置 array_sort.length-1 和 index_sort(最大值)上的两个数
            int temp = array[array.length-i]; //把第一个元素保存在临时变量中
            array[array.length-i] = array[index];    //把第二个保存在第一个
            array[index] = temp; //把临时变量(也就是第一个)保存在第二个元素中
        }
        //遍历输出
        for(int k : array){
            System.out.print(">"+k);
        }

        System.out.println("\n--------------------------");

        //2.反转排序
        /**
         * 基本思想:把数组最后一个元素与第一个元素替换,倒数第二个元素把第二个元素替换,以此类推,直到把所有数组元素反转替换
         * 反转排序是对数组两边的元素进行替换,所以只需要循环数组长度的半数次
         * 如数组长度为7,那么for循环只需循环3次
         */

        int[] a = {10,20,30,40,50,60};
        //数组反转后遍历输出
        for(int x : a){
            System.out.print(x+"\t");
        }
        System.out.println();
        int temp;
        int len = a.length;    //获取数组长度
        for(int i=0;i<len / 2 ;i++){    //根据算法,长度 除2
            temp = a[i];            //交换
            a[i] = a[len - 1 - i];
            a[len - 1 - i] = temp;
        }
        //数组反转后遍历输出
        for(int x : a){
            System.out.print(x+"\t");
        }

    }

}
时间: 2024-12-25 14:03:01

10、直接选择排序和反转排序的相关文章

排序之 -- 反转排序

示意: 偶数:初始数组资源 [10        20        30        40        50        60] 第一趟排序后    60     [20        30        40        50]     10第二趟排序后    60        50     [30        40]     20        10第三趟排序后    60        50        40        30        20        10 奇数

直接选择排序与反转排序

1 //直接选择排序 2 int[] array = { 63, 4, 24, 1, 3, 15 }; 3 int j; int t; 4 for(int i = 1; i < array.length; i++) 5 { 6 int n = 0; 7 for(j = 1; j <= array.length - i; j++) //当i等于5的时候还要有一次比较 8 { //若j<array.length,则内部少一次循环 9 if(array[j] > array[n]) 10

Java 的冒泡排序、直接选择排序和反转排序方法

冒泡排序: System.out.println(Arrays.toString(arr)); int temp = -1; for(int i=0;i<arr.length;i++) { for(int j=i+1;j<arr.length;j++) { if(arr[i]>arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); 直接

C语言中的排序算法--冒泡排序,选择排序,希尔排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端 维基百科:点击打开链接 [cpp] view plain copy /* 用选择法对10个数进行排序 */ #include<stdio.h> void main() { int i,j,

10. 蛤蟆的数据结构进阶十排序相关概念

10. 蛤蟆的数据结构进阶十排序相关概念 本篇名言:"生,亦我所欲也:义,亦我所欲也:二者不可得兼,舍生而取义者也.--孟轲" 接下去我们将来看下排序相关的知识. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47381339 1.  排序 排序是什么? 将一组杂乱无章的记录按一定规律顺序排列起来. 什么排序方法是稳定的?什么是不稳定的? 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记

插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——C++实现

首先是算法实现文件Sort.h,代码如下: /* * 实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 * 以及快速排序.归并排序.堆排序和LST基数排序 * @author gkh178 */ #include <iostream> template<class T> void swap_value(T &a, T &b) { T temp = a; a = b; b = temp; } //插入排序:时间复杂度o(n^2) template<

九种经典排序算法详解(冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)

综述 最近复习了各种排序算法,记录了一下学习总结和心得,希望对大家能有所帮助.本文介绍了冒泡排序.插入排序.选择排序.快速排序.归并排序.堆排序.计数排序.桶排序.基数排序9种经典的排序算法.针对每种排序算法分析了算法的主要思路,每个算法都附上了伪代码和C++实现. 算法分类 原地排序(in-place):没有使用辅助数据结构来存储中间结果的排序**算法. 非原地排序(not-in-place / out-of-place):使用了辅助数据结构来存储中间结果的排序算法 稳定排序:数列值(key)

[jQuery编程挑战]004 针对选择框词典式排序

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>针对选择框词典式排序</title> <script type="text/javascript" src="../js/jquery-1.11.0.js"></script> <scr

数据算法 --hadoop/spark数据处理技巧 --(3.左外连接 4.反转排序)

三. 左外连接 考虑一家公司,比如亚马逊,它拥有超过2亿的用户,每天要完成数亿次交易.假设我们有两类数据,用户和交易: users(user_id,location_id) transactions(transction_id,product_id,user_id,quantity,amout) 所谓左外连接:令T1(左表)和T2(右表)是以下两个关系(其中t1是T1的属性,t2是T2的属性): T1=(K,t1) T2=(K,t2) 关系T1,T2在连接键K上左外连接的结果将包含左表(T1)的