Este artículo resume varios algoritmos de clasificación en Java. Compártelo para su referencia, como sigue:
1. Sorteo de burbujas:
clase pública Sorttest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,456,78, -1,78 , 78,32,444,345}; {para (int j = 0; j <a.length-i-1; j ++) {if (a [j]> a [j+1]) {int tmp = a [j]; [j+1];
2. Sorteo rápido (sin valores duplicados):
Public Class Sorttest {public static void main (string [] args) {int [] a = {345,7,32,5,4,3,12,23,110}; .length-1); = inicio; ) {i ++; int n, int index) {int tmp = a [n]; .println (arrays.tostring (a));
3. Sorteo rápido (puede incluir valores repetidos)
clase pública Sorttest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,456,78, -1,78 , 78,32,345}; > = end) return int i = start; = index && a [j] == a [index]) {index = swap (a,-j, index); a [i]) {i ++; i, índice); a [n]; ;
4. Clasificación de montón
clase pública Sorttest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,456,78, -1,78 , 78,32,444,345}; /2-1; i> = 0; i-) {createBighAp (a, i, size-1); [0]; [] a, int inicio, int end) {int tmp = a [inicio]; +1]) {j ++; ] = tmp;
5. Insertar clasificación
Public Class Sorttest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3}; ); j = i; j> = 0; j-) {if (tmp <a [j]) {a [n] = a [j]; a [n] = tmp;}} private static void show (int [] a) {system.out.println (arrays.tostring (a));
6. Doble la mitad de inserción de inserción
Class public Sorttest {public static void main (string [] args) {int [] a = {345,7,7,345,2,2,7,2,7,23,2,345,7,32,4,---- 1,3,7,2,3,2,3,4,2,1,2,4,5,3,345,3,2}; static void insertSort2 (int [] a) {para (int i = 0; i <a.length-1; i ++) {int n = i+1; ] Continuar con low = 0; ]) {high = mid -1; -) {a [j] = a [j-1]; ;
7. Sorteo de la colina
Class public Sorttest {public static void main (string [] args) {int [] a = {345,7,32,5,4, -1,3,2,3,5,7,8,90,1} ; ) {int i, j, k, temp, gap; 5854857, 157840433,410151271,1131376761,2147483647}; i <n; i ++) {temp = a [i]; - Gap;} a [j] = temp;
8. Seleccione Ordenar
Clasificación pública Sorttest {public static void main (string [] args) {int [] a = {345,7,32,5,4, -1}; } PRIVADO SECHE SELECTSORT (int [] a) {para (int i = 0; i <a.length-1; i ++) {int min = i; j ++) {if (a [j] <a [min]) min = j; = tmp;}}} private static void show (int [] a) {system.out.println (arrays.tostring (a));
9. Orden
Class public Sorttest {public static void main (string [] args) {int [] a = {345,7,32,5,4, -1,3,2,3,5,7,8,90,1,432, 1} Show (a); Almacenamiento del espacio El índice medio es con el valor izquierdo int [] izquierda = setValue (a, 0, mediano); ; El valor del elemento es 1 Mergeort (derecha); {int i = 0, j = 0, k = 0; [i ++]; ; j ++) {a [k ++] = derecho [j]; int i = 0; a)); } }
Resumen:
clase pública sortuTil {public final static int desc = -1; (int [] a, int sort) {if (sort == asc) bubblesortasc (a); .length-1; i ++) {for (int j = 0; j <a.length-i-1; j ++) {if (a [j]> a [j+1]) {int tmp = a [j] ; 1; i ++) {para (int j = 0; j <a.length-i-1; j ++) {if (a [j] <a [j+1]) {int tmp = a [j]; j] = a [j+1]; -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------------- Capacidad -Segment-línea ---------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- param sort sortUtil.asc, sortUtil.Desc */ public static void Quicknorepeatsort (int [] a, int sort) {if (sort == ASC) QuicknorepeatsortScc (A, 0, A.Length-1); 0, a.length-1); inicio; {i ++; int inicio, int end) {if (start> = end) return; {j -;} index = swap (a, j, index); , índice - 1); c static void Quicksort (int [] a, int sort) {if (sort == ASC) Quicksortasc (a, 0, A.Length-1); static void quicksortasc (int [] a, int intar, int end) {if (inicio> = end) return; [j]> a [index]) {j--; index = swap (a, j, index); (A, ++ I, índice); static voi d QuicksortDesc (int [] a, int inicio, int end) {if (inicio> = end) return; a [j] <a [index]) {j--; {index = swap (a, j, index); swap (a, ++ i, índice); static i nt swap (int [] a, int n, int index) {int tmp = a [n]; ---- ---------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------- @param una matriz de clasificación * @param sort sortUtil.asc, sortUtil.Desc */ public static void Heapsort (int [] a, int sort) {if (sort == asc) Heapsortasc (a); i--) {createBighAp (a, i, tamaño - 1); [Tamaño - 1 - J]; {int tmp = a [inicio]; a [j]> tmp) {a [inicio] = a [j]; int [] a) {// Crear montón mínimo int size = a.length; } // clasificar para (int j = 0; j <size - 1; j ++) {int tmp = a [0]; = tmp; 1; while (j <= end) {if (j <end &&& a [j]> a [j+1]) {j ++; ]; -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------- ------------------------ /** * Insertar ordenar * * @param una matriz de clasificación * @param sort sortUtil. ASC, sortuTil.Desc */ public static void InsertSort (int [] a, int sort) {if (sort == ASC) {InsertSortasc (a); [] a) {para (int i = 0; i <a.length - 1; i ++) {int n = i+1; j--) {if (tmp <a [j]) {a [n] = a [j]; Public static void InsertSortDesc (int [] a) {para (int i = 0; i <a.length - 1; i ++) {int n = i+1; ; ] = tmp; -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------- * Half Insert Sort * * @param una matriz de clasificación * @param sort sortUtil.asc, sortUtil.Desc */ public static void halfInsertsort (int [] a, int sort) {if (sort == ASC) {HalfInsertSortasc (a); - 1; / 2; = Mid + 1; tmp;}} public static void halfinsertsortDesc (int [] a) {para (int i = 0; i <a.length - 1; i ++) {int n = i+1; tmp <a [i]) continuar; TMP> A [Mid]) {High = Mid - 1; J> Mid; -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------- ------------------ /** * Hill Sort * * @param una matriz de clasificación * @param sort SortUtil.asc, sortUtil.Desc */ public static void shellsort (int [] a, int sort) {if (sort == asc) {shellsortasc (a, a.length); ); , 4711, 11969, 27901, 84801, 213331, 543749, 13553339, 3501671, 8810089, 21521774, 58548857, 157840433, 410151271, 1131376761, 2147483641 (k]; n; --k> = 0) {Ga p = GAPS [K]; - gap]> temp) {a [j] = a [j - gap]; Int I, J, K, Temp, Gap; , 21521774, 58548857, 157840433, 410151271, 11313776761, 2147483647} para (k = 0; brechas [k] <n; k ++); = GAP; J = J-GAP; -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------- --- / ** * Seleccionar ordenar * * @param una matriz de clasificación * @param sort sortUtil.asc, sortUtil.desc * / public static void selectsort (int [] a, int sort) {if (sort == asc) {selectSortasc (a); = 0; :::::::::::::::::::::::::::::::::::::::::::::::::::::: :: :::::::::::::::::::::::::::::::::::::: :::::::; = i+1; ] = a [min]; ; ]; -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------ -line de segmentación de funciones -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------ Sortutil.desc */ Public static void Mergesort (int [] a, int sort) {// Encuentra el valor intermedio int mid = a.length / 2; , medio); int [] right = setValue (a, mid, a.length); = = ASC) {MERGEASC (a, izquierda, derecha); i : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :::::::::::::::::::::::::::::::::::::::::::::::::::::: : ::::::::::::::::::::::::::::: = 0, J = 0, k = 0; right.length;) {if (izquierda [i] <right [j]) {a [k ++] = izquierda [i ++]; .length; , int [] izquierda, int [] derecha) {int i = 0, j = 0, k = 0; [j]) {a [k ++] = izquierda [i ++]; ]; = nuevo int [longitud - inicio];
Espero que este artículo sea útil para la programación Java de todos.