java排序演算法(三)------選擇排序
選擇排序
基本思想:每一趟從待排序的資料元素中選擇最小(或最大)的一個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。 選擇排序的時間複雜度和空間複雜度分別為 O(n2 ) 和 O(1)
程式碼實現:
public static void sort(int[] arr){
int t = 0;
int min;
for(int i = 0;i < arr.length-1;i ++){
min = i;
for(int j = i + 1;j < arr.length;j ++){
if(arr[min] > arr[j]){
min = j;
}
}
if(i != min){
t = arr[i];
arr[i] = arr[min];
arr[min] = t;
count ++;
}
}
}
相關推薦
java排序演算法(三)------選擇排序
選擇排序 基本思想:每一趟從待排序的資料元素中選擇最小(或最大)的一個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。 選擇排序的時間複雜度和空間複雜度分別為 O(n2 ) 和 O(1) 程式碼實現: public static void s
java排序演算法(二)----選擇排序
選擇排序(Selection Sort) 選擇排序(Selection-sort)是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從
java 實現 常見排序演算法(三)快速排序
大家好,我是烤鴨: 今天分享一下基礎排序演算法之快速排序。快速排序是內部排序(基於比較排序)中最好的比較演算法。 1. 快速排序:
排序演算法(六)——選擇排序
選擇排序(Selection sort)是一種簡單直觀的排序演算法。選擇排序的交換操作介於和次之間。選擇排序的比較操作為次。選擇排序的賦值操作介於和次之間。 運作方式如下: 1.首先從原始陣列中選擇最小的1個數據,將其和位於第1個位置的資料交換。 2.接著從剩下的n-1個數據中選擇次小的
排序演算法(三)——快速排序
快速排序(英語:Quicksort),簡稱快排,一種排序演算法。在平均狀況下,排序個專案要次比較。在最壞狀況下則需要次比較。 運作方式如下: 1.從陣列中挑出一個元素,作為基準,一般是第一個元素。 2.重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準後面(相
排序演算法(一)選擇排序和氣泡排序
1. 選擇排序: 選擇排序是一種很簡單直觀的排序方法,就是在未排序的資料中挑選出最大或者最小的元素,存放到已排序資料的末尾。 簡單的講,就是每次都把最大或者最小的資料挑選出來,然後依次組成新的序列。 假設有資料{1,4,6,8,3,4,0,2,14},要按照從大到小進行
排序演算法(三)-- 堆排序
堆排序 堆排序演算法結合了插入排序和歸併排序演算法的優點,和插入排序一樣,堆排序不需要額外申請空間。它是一種原地排序的演算法;和歸併排序一樣,堆排序的執行時間也是O(nlgn)。堆排序利用“堆”這種資
排序演算法(二)——選擇排序及改進
選擇排序 基本思想 氣泡排序中有一個缺點,比如,我們比較第一個數a1與第二個數a2的時候,只要a1比a2大就會交換位置,但是我們並不能確定a2是最小的元素,假如後面還有比它更小的,該元素還會與a2
必須知道的八大種排序演算法【java實現】(三) 歸併排序演算法、堆排序演算法詳解
一、歸併排序演算法 基本思想: 歸併(Merge)排序法是將兩個(或兩個以上)有序表合併成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然後再把有序子序列合併為整體有序序列。 歸併排序示例: 合併方法: 設r[i…n]由兩個有序子表r[i…m]和r[m+1…n]組
必須知道的八大種排序演算法【java實現】(二) 選擇排序,插入排序,希爾演算法【詳解】
一、選擇排序 1、基本思想:在要排序的一組數中,選出最小的一個數與第一個位置的數交換;然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。 2、例項 3、演算法實現 /** * 選擇排序演算法 * 在未
八大排序演算法之三簡單選擇排序(c語言)
選擇排序—簡單選擇排序(Simple Selection Sort) 基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元
從零開始學演算法(三)插入排序
從零開始學演算法(三)插入排序 插入排序 演算法介紹 演算法原理 演算法簡單記憶說明 演算法複雜度和穩定性 程式碼實現 插入排序 程式碼是Javascript語言寫的(幾乎是虛擬碼) 演算
從零開始學演算法(二)選擇排序
從零開始學演算法(二)選擇排序 選擇排序 演算法介紹 演算法原理 演算法簡單記憶說明 演算法複雜度和穩定性 程式碼實現 選擇排序 程式碼是Javascript語言寫的(幾乎是虛擬碼) 演算
java排序演算法(二)------插入排序
插入排序 直接插入排序基本思想: 每一步將一個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。 public static void sort(int[] arr) { int i; int t; for (int j
java排序演算法(四)------歸併排序
歸併排序: 是利用歸併的思想實現的排序方法,該演算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞迴求解,而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。 合
java排序演算法(七)------堆排序
堆排序 程式碼實現: public static void sort01(int[] arr) { for (int i = 0; i < arr.length; i++) { headAdust01(arr, arr.length - 1
java排序演算法(九)------基數排序
基數排序 程式碼實現: public class RadixSort { public static void sort(int[] a) { int digit = 0;// 陣列的最大位數 for (int i
【C語言】簡單排序(三)選擇排序
一、演算法框圖 二、程式碼實現 /******************** 名稱:選擇排序 作者:豆豆 ********************/ #include<stdio.h> #define LENGTH 6 //巨集定義數列長度為
java 實現 常見排序演算法(二) 插入排序
大家好,我是烤鴨: 今天分享一下基礎排序演算法之直接插入排序。 1. 直接插入排序: 原理:假設前面的數為有序數列,然後有序數列與無序數列的每個數比較,我們可
Java排序演算法(十)--桶排序
前面的1~8介紹的都是基礎的排序的演算法,現在來介紹一種高效的排序演算法–桶排序。 桶排序的原理是:將陣列分到有限數量的桶子裡。每個桶子再個別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序)。桶排序是鴿巢排序的一種歸納結果。當要被排序的陣