1. 程式人生 > >java演算法-選擇排序

java演算法-選擇排序

 選擇排序演算法特點:

>每一輪找出一個最小值或者最大值,依次放在最前面的位置。在查詢的過程中,用當前假定的最小值或者最大值,去跟後面所有的值進行比較。如果小或者大,就把下標給那個假定的值。一輪迴圈完了之後,再次判斷,那個當初假定的最小或者最大,是否在一輪比較之後,發生過變化,如果變化了,那假定的值就不是那一輪比較的最小或者最大,就要進行交換。相比氣泡排序,他在空間上有優勢,不需要頻繁的交換。

package com.ghostwu;
import java.util.Random;

class MySelectSort {
    private int[] arr;
    
public MySelectSort(){ arr = new int[10]; Random rand = new Random(); for( int i = 0; i < arr.length; i++ ){ arr[i] = rand.nextInt( 101 ); } } public void sort(){ int min; for( int i = 0; i < arr.length; i++ ){ min
= i; for( int j = i + 1; j < arr.length; j++ ){ if( arr[min] > arr[j] ) { min = j; } } if( min != i ) { int tmp = arr[min]; arr[min] = arr[i]; arr[i]
= tmp; } display( "第" + ( i + 1 ) + "輪的比較結果: " ); } } public void display( String info ){ System.out.println( info ); for( int i = 0; i < arr.length; i++ ){ System.out.print( arr[i] + "\t" ); } System.out.println(); } } public class SelectSort{ public static void main( String[] args ){ MySelectSort ss = new MySelectSort(); ss.display( "排序之前:" ); ss.sort(); ss.display( "排序之後:" ); } }

執行結果:

[email protected]:~/java/data_struct/sort$ java com.ghostwu.SelectSort 
排序之前:
83    18    39    98    17    68    77    68    65    2    
第1輪的比較結果: 
2    18    39    98    17    68    77    68    65    83    
第2輪的比較結果: 
2    17    39    98    18    68    77    68    65    83    
第3輪的比較結果: 
2    17    18    98    39    68    77    68    65    83    
第4輪的比較結果: 
2    17    18    39    98    68    77    68    65    83    
第5輪的比較結果: 
2    17    18    39    65    68    77    68    98    83    
第6輪的比較結果: 
2    17    18    39    65    68    77    68    98    83    
第7輪的比較結果: 
2    17    18    39    65    68    68    77    98    83    
第8輪的比較結果: 
2    17    18    39    65    68    68    77    98    83    
第9輪的比較結果: 
2    17    18    39    65    68    68    77    83    98    
第10輪的比較結果: 
2    17    18    39    65    68    68    77    83    98    
排序之後:
2    17    18    39    65    68    68    77    83    98

相關推薦

Java演算法——選擇排序

選擇排序 前言 選擇排序的演算法太過複雜,因為每一次都要完全遍歷整個陣列確定了最值才能進行下一次的迴圈,是一種不穩定的排序,時間複雜度是n²,相對來說適用於數量較小的排序中,而不太適用於大量的資料進行排序。 選擇排序描述 選擇排序,就是每次遍歷挑選出來最值和前面的值依次進行交

java演算法-選擇排序

 選擇排序演算法特點: >每一輪找出一個最小值或者最大值,依次放在最前面的位置。在查詢的過程中,用當前假定的最小值或者最大值,去跟後面所有的值進行比較。如果小或者大,就把下標給那個假定的值。一輪迴圈完了之後,再次判斷,那個當初假定的最小或者最大,是否在一輪比較之後,發生過變化,如果變化了,那假定的值就

java版資料結構與演算法選擇排序

/** * 選擇排序:時間複雜度O(n^2), * 比氣泡排序稍好點,交換次數少 */ class ArraySelect { public static void selectSort(int arr[]){ for(int i=0;i<arr.leng

**java演算法 氣泡排序 選擇排序 折半查詢**

//氣泡排序 ``` int[] arr = {2,3,5,6,4,7,8,2,5,6}; for(int i = 0; i < arr.length-1; i++){       for(int j = i + 1; j < arr.length; j++){

java排序演算法選擇排序(二)

選擇排序 選擇排序的思想方法:快速排序的思想非常直接,正如名字一樣,將要排序的資料元素選出最小的,將它和資料元素的首位交換位置。再次從剩下的資料元素中 找到最小的元素,放到第二個位置上……以此類推,直到將整個資料元素排序。 程式碼實現 public class selectSor

排序演算法Java實現——選擇排序(直接選擇排序

比較排序程式碼: /*@(#)chooseSort.java 2017-4-22 * Copy Right 2017 Bank of Communications Co.Ltd. * A

java實現選擇排序演算法

選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中 繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。 下面是

Java選擇排序演算法

這個相對簡單點,我想法是鎖定每一次排序的邏輯表達,截斷陣列,就是找到最小的拿出來,放前面,再找出最小的放剩下的部分的前面。 類部分:selection_sort.Javapackage algorithm; public class selection_sort {

java簡單選擇排序演算法

         選擇排序和氣泡排序差不多,只是氣泡排序在發現比它小的時候就交換,而選擇排序是隻有在確定了最小的資料之後,才會發生交換。 選擇排序的基本思想:第i趟簡單選擇排序是指通過n-i次關鍵字的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i個記錄進行交換。先

排序演算法--選擇排序之簡單選擇排序

在待排序記錄中,選擇一個最小的數,和第一個記錄交換位置,在剩下n-1個的記錄中選擇最小的和第二個記錄交換,依次類推,最終可以得到一個有序的序列。 程式碼: #include <string.h> #include <malloc.h> #includ

Python 演算法 - 選擇排序

# coding=utf-8 # 選擇排序 def select_sort(lst=[]): """ 基本思想:第1趟,在待排序記錄r1 ~ r[n]中選出最小的記錄,將它與r1交換; 第2趟,在待排序記錄r2 ~ r[n]中選出最小的記錄,將它與r2交換;

排序演算法選擇排序(關鍵詞:資料結構/演算法/排序演算法/選擇排序

假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 選擇排序演算法 程式碼 from swap import swap def select_sort(nums): n = len(nums) i = 0 while

小甲魚 排序演算法 選擇排序

小甲魚 排序演算法 選擇排序   雖然選擇排序 和 氣泡排序 進行的比較次數是一樣的,但是選擇排序 比 氣泡排序 進行移動的次數少,效率更高   選擇排序: //selectsort.c #include <stdio.h> void Selec

Java演算法-快速排序

通過一趟排序將待排序記錄分割成獨立的兩部分,其中一部分記錄的資料均比關鍵字小,而另一部分記錄的資料均比關鍵字大,則分別對這兩部分繼續進行排序,直到整個序列有序。 把整個序列看做一個數組,把第零個位置看做中軸,和最後一個比,如果比它小交換,比它大不做任何處理;交換了以後再和小的那端

JAVA Python 選擇排序

選擇排序:每圈要比較的第一個元素與該元素後面的陣列元素依次比較到陣列的最後一個元素,把小的值放在第一個陣列元素中,陣列迴圈一圈後,則把最小元素值互換到了一個元素中。陣列再迴圈一圈後,把第二小的元素值互換到了第二個元素中。按照這種方式,陣列迴圈多圈以後,就完成了陣列元素的排序。 1.使用for迴圈

排序演算法----選擇排序

選擇排序的思路是,先從序列中找到最小的元素,放在第一個位置,然後找到第二小的元素,放在第二個位置,以此類推,直到排好所有的值。 時間複雜度:O(n^2),需要進行比較的次數為第一輪n-1,n-2,n-3...1,總的比較次數n*(n-1)/2 例如:a=[1,2,3,4,5,6]

排序演算法---選擇排序

參考網址:https://www.cnblogs.com/onepixel/articles/7674659.html 選擇排序(Selection-sort)是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位

最易於理解的排序演算法——選擇排序

我在標題中說選擇排序是最易於理解的演算法,下面就來給大家說說為何選擇排序是最易於理解的演算法。 思想:                 以升序為例,在陣列arr中遍歷陣列找到其中最小的那個元素,將其與arr[0]交換,之後在剩餘的陣列中,在尋找最小的元素,將其與arr[1

排序演算法--選擇排序--簡單選擇排序

//選擇排序--簡單選擇排序 void selection_print_list(int list[] , int count) {     for(int i = 0 ; i <  count ; i++)     {         printf("%5d" ,

Java演算法——————七大排序

排序演算法的分類: 排序:基本排序:{交換排序:氣泡排序,快速排序。                              {選擇排序:選擇排序,堆排序                              {插入排序:直接插入排序,Shell排序