<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FCollections%2FSort</id>
		<title>Java Tutorial/Collections/Sort - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FCollections%2FSort"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Collections/Sort&amp;action=history"/>
		<updated>2026-04-07T19:00:17Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Collections/Sort&amp;diff=4684&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Collections/Sort&amp;diff=4684&amp;oldid=prev"/>
				<updated>2010-06-01T05:04:29Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:04, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Collections/Sort&amp;diff=4683&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Collections/Sort&amp;diff=4683&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Bubble Sort ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here are the rules:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;Compare two players.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;If the one on the left is taller, swap them.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Move one position right.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = new int[] { 2, 6, 3, 8, 4, 9, 1 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.print(i);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    bubbleSort(intArray);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.print(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void bubbleSort(int[] intArray) {&lt;br /&gt;
    int out, in;&lt;br /&gt;
    for (out = intArray.length - 1; out &amp;gt; 0; out--) {&lt;br /&gt;
      for (in = 0; in &amp;lt; out; in++) {&lt;br /&gt;
        if (intArray[in] &amp;gt; intArray[in + 1]) {&lt;br /&gt;
          swap(intArray, in, in + 1);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static void swap(int[] intArray, int one, int two) {&lt;br /&gt;
    int temp = intArray[one];&lt;br /&gt;
    intArray[one] = intArray[two];&lt;br /&gt;
    intArray[two] = temp;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;2638491&lt;br /&gt;
1234689&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generic Merge Sorter with generic Comparator ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
&lt;br /&gt;
public class AnimationTester {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Integer[] values = new Integer[]{1,2,7,3,5};&lt;br /&gt;
    Comparator&amp;lt;Integer&amp;gt; comp = new Comparator&amp;lt;Integer&amp;gt;() {&lt;br /&gt;
      public int compare(Integer d1, Integer d2) {&lt;br /&gt;
        return d1.rupareTo(d2);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    MergeSorter.sort(values, comp);&lt;br /&gt;
    for (int i = 0; i &amp;lt; values.length; i++){&lt;br /&gt;
      System.out.print(values[i]+&amp;quot; &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MergeSorter {&lt;br /&gt;
  public static &amp;lt;E&amp;gt; void sort(E[] a, Comparator&amp;lt;? super E&amp;gt; comp) {&lt;br /&gt;
    mergeSort(a, 0, a.length - 1, comp);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private static &amp;lt;E&amp;gt; void mergeSort(E[] a, int from, int to, Comparator&amp;lt;? super E&amp;gt; comp) {&lt;br /&gt;
    if (from == to)&lt;br /&gt;
      return;&lt;br /&gt;
    int mid = (from + to) / 2;&lt;br /&gt;
    // Sort the first and the second half&lt;br /&gt;
    mergeSort(a, from, mid, comp);&lt;br /&gt;
    mergeSort(a, mid + 1, to, comp);&lt;br /&gt;
    merge(a, from, mid, to, comp);&lt;br /&gt;
  }&lt;br /&gt;
  private static &amp;lt;E&amp;gt; void merge(E[] a, int from, int mid, int to, Comparator&amp;lt;? super E&amp;gt; comp) {&lt;br /&gt;
    int n = to - from + 1;&lt;br /&gt;
    Object[] values = new Object[n];&lt;br /&gt;
    int fromValue = from;&lt;br /&gt;
    int middleValue = mid + 1;&lt;br /&gt;
    int index = 0;&lt;br /&gt;
    while (fromValue &amp;lt;= mid &amp;amp;&amp;amp; middleValue &amp;lt;= to) {&lt;br /&gt;
      if (comp.rupare(a[fromValue], a[middleValue]) &amp;lt; 0) {&lt;br /&gt;
        values[index] = a[fromValue];&lt;br /&gt;
        fromValue++;&lt;br /&gt;
      } else {&lt;br /&gt;
        values[index] = a[middleValue];&lt;br /&gt;
        middleValue++;&lt;br /&gt;
      }&lt;br /&gt;
      index++;&lt;br /&gt;
    }&lt;br /&gt;
    while (fromValue &amp;lt;= mid) {&lt;br /&gt;
      values[index] = a[fromValue];&lt;br /&gt;
      fromValue++;&lt;br /&gt;
      index++;&lt;br /&gt;
    }&lt;br /&gt;
    while (middleValue &amp;lt;= to) {&lt;br /&gt;
      values[index] = a[middleValue];&lt;br /&gt;
      middleValue++;&lt;br /&gt;
      index++;&lt;br /&gt;
    }&lt;br /&gt;
    for (index = 0; index &amp;lt; n; index++)&lt;br /&gt;
      a[from + index] = (E) values[index];&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Insertion Sort ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = new int[] { 2, 6, 3, 8, 4, 9, 1 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.print(i);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    insertionSort(intArray);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.print(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void insertionSort(int[] intArray) {&lt;br /&gt;
    int in, out;&lt;br /&gt;
    for (out = 1; out &amp;lt; intArray.length; out++) {&lt;br /&gt;
      int temp = intArray[out];&lt;br /&gt;
      in = out;&lt;br /&gt;
      while (in &amp;gt; 0 &amp;amp;&amp;amp; intArray[in - 1] &amp;gt;= temp) {&lt;br /&gt;
        intArray[in] = intArray[in - 1];&lt;br /&gt;
        --in;&lt;br /&gt;
      }&lt;br /&gt;
      intArray[in] = temp;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static void swap(int[] intArray, int one, int two) {&lt;br /&gt;
    int temp = intArray[one];&lt;br /&gt;
    intArray[one] = intArray[two];&lt;br /&gt;
    intArray[two] = temp;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;2638491 &lt;br /&gt;
1234689&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Mergesort: merging two arrays into a third ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] arrayA = { 23, 47, 81, 95 };&lt;br /&gt;
    int[] arrayB = { 7, 14, 39, 55, 62, 74 };&lt;br /&gt;
    int[] arrayC = new int[10];&lt;br /&gt;
    merge(arrayA, arrayA.length, arrayB, arrayB.length, arrayC);&lt;br /&gt;
    for (int i : arrayC) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void merge(int[] arrayA, int sizeA, int[] arrayB, int sizeB, int[] arrayC) {&lt;br /&gt;
    int arrayAIndex = 0, arrayBIndex = 0, arrayCIndex = 0;&lt;br /&gt;
    while (arrayAIndex &amp;lt; sizeA &amp;amp;&amp;amp; arrayBIndex &amp;lt; sizeB)&lt;br /&gt;
      if (arrayA[arrayAIndex] &amp;lt; arrayB[arrayBIndex])&lt;br /&gt;
        arrayC[arrayCIndex++] = arrayA[arrayAIndex++];&lt;br /&gt;
      else&lt;br /&gt;
        arrayC[arrayCIndex++] = arrayB[arrayBIndex++];&lt;br /&gt;
    while (arrayAIndex &amp;lt; sizeA)&lt;br /&gt;
      arrayC[arrayCIndex++] = arrayA[arrayAIndex++];&lt;br /&gt;
    while (arrayBIndex &amp;lt; sizeB)&lt;br /&gt;
      arrayC[arrayCIndex++] = arrayB[arrayBIndex++];&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7&lt;br /&gt;
14&lt;br /&gt;
23&lt;br /&gt;
39&lt;br /&gt;
47&lt;br /&gt;
55&lt;br /&gt;
62&lt;br /&gt;
74&lt;br /&gt;
81&lt;br /&gt;
95&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Quicksort: simple version of quick sort ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = { 1, 9, 2, 8, 3, 7, 4, 6, 5 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
    quickSort(intArray);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void quickSort(int[] intArray) {&lt;br /&gt;
    recQuickSort(intArray, 0, intArray.length - 1);&lt;br /&gt;
  }&lt;br /&gt;
  private static void recQuickSort(int[] intArray, int left, int right) {&lt;br /&gt;
    if (right - left &amp;lt;= 0)&lt;br /&gt;
      return;&lt;br /&gt;
    else {&lt;br /&gt;
      int pivot = intArray[right];&lt;br /&gt;
      int partition = partitionIt(intArray, left, right, pivot);&lt;br /&gt;
      recQuickSort(intArray, left, partition - 1);&lt;br /&gt;
      recQuickSort(intArray, partition + 1, right);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static int partitionIt(int[] intArray, int left, int right, int pivot) {&lt;br /&gt;
    int leftPtr = left - 1;&lt;br /&gt;
    int rightPtr = right;&lt;br /&gt;
    while (true) {&lt;br /&gt;
      while (intArray[++leftPtr] &amp;lt; pivot)&lt;br /&gt;
        ;&lt;br /&gt;
      while (rightPtr &amp;gt; 0 &amp;amp;&amp;amp; intArray[--rightPtr] &amp;gt; pivot)&lt;br /&gt;
        ;&lt;br /&gt;
      if (leftPtr &amp;gt;= rightPtr)&lt;br /&gt;
        break;&lt;br /&gt;
      else&lt;br /&gt;
        swap(intArray, leftPtr, rightPtr);&lt;br /&gt;
    }&lt;br /&gt;
    swap(intArray, leftPtr, right);&lt;br /&gt;
    return leftPtr;&lt;br /&gt;
  }&lt;br /&gt;
  private static void swap(int[] intArray, int dex1, int dex2) {&lt;br /&gt;
    int temp = intArray[dex1];&lt;br /&gt;
    intArray[dex1] = intArray[dex2];&lt;br /&gt;
    intArray[dex2] = temp;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;1&lt;br /&gt;
9&lt;br /&gt;
2&lt;br /&gt;
8&lt;br /&gt;
3&lt;br /&gt;
7&lt;br /&gt;
4&lt;br /&gt;
6&lt;br /&gt;
5&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Quick sort: uses an insertion sort to handle subarrays of fewer than 10 cells ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = { 1, 9, 2, 8, 3, 7, 4, 6, 5 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
    quickSort(intArray);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void quickSort(int[] intArray) {&lt;br /&gt;
    recQuickSort(intArray, 0, intArray.length - 1);&lt;br /&gt;
    insertionSort(intArray, 0, intArray.length - 1);&lt;br /&gt;
  }&lt;br /&gt;
  public static void recQuickSort(int[] intArray, int left, int right) {&lt;br /&gt;
    int size = right - left + 1;&lt;br /&gt;
    if (size &amp;lt; 10)&lt;br /&gt;
      insertionSort(intArray, left, right);&lt;br /&gt;
    else {&lt;br /&gt;
      double median = medianOf3(intArray, left, right);&lt;br /&gt;
      int partition = partitionIt(intArray, left, right, median);&lt;br /&gt;
      recQuickSort(intArray, left, partition - 1);&lt;br /&gt;
      recQuickSort(intArray, partition + 1, right);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static double medianOf3(int[] intArray, int left, int right) {&lt;br /&gt;
    int center = (left + right) / 2;&lt;br /&gt;
    if (intArray[left] &amp;gt; intArray[center])&lt;br /&gt;
      swap(intArray, left, center);&lt;br /&gt;
    if (intArray[left] &amp;gt; intArray[right])&lt;br /&gt;
      swap(intArray, left, right);&lt;br /&gt;
    if (intArray[center] &amp;gt; intArray[right])&lt;br /&gt;
      swap(intArray, center, right);&lt;br /&gt;
    swap(intArray, center, right - 1);&lt;br /&gt;
    return intArray[right - 1];&lt;br /&gt;
  }&lt;br /&gt;
  public static void swap(int[] intArray, int dex1, int dex2) {&lt;br /&gt;
    int temp = intArray[dex1];&lt;br /&gt;
    intArray[dex1] = intArray[dex2];&lt;br /&gt;
    intArray[dex2] = temp;&lt;br /&gt;
  }&lt;br /&gt;
  public static int partitionIt(int[] intArray, int left, int right, double pivot) {&lt;br /&gt;
    int leftPtr = left;&lt;br /&gt;
    int rightPtr = right - 1;&lt;br /&gt;
    while (true) {&lt;br /&gt;
      while (intArray[++leftPtr] &amp;lt; pivot)&lt;br /&gt;
        ;&lt;br /&gt;
      while (intArray[--rightPtr] &amp;gt; pivot)&lt;br /&gt;
        ;&lt;br /&gt;
      if (leftPtr &amp;gt;= rightPtr)&lt;br /&gt;
        break;&lt;br /&gt;
      else&lt;br /&gt;
        swap(intArray, leftPtr, rightPtr);&lt;br /&gt;
    }&lt;br /&gt;
    swap(intArray, leftPtr, right - 1);&lt;br /&gt;
    return leftPtr;&lt;br /&gt;
  }&lt;br /&gt;
  public static void insertionSort(int[] intArray, int left, int right) {&lt;br /&gt;
    int in, out;&lt;br /&gt;
    for (out = left + 1; out &amp;lt;= right; out++) {&lt;br /&gt;
      int temp = intArray[out];&lt;br /&gt;
      in = out;&lt;br /&gt;
      while (in &amp;gt; left &amp;amp;&amp;amp; intArray[in - 1] &amp;gt;= temp) {&lt;br /&gt;
        intArray[in] = intArray[in - 1];&lt;br /&gt;
        --in;&lt;br /&gt;
      }&lt;br /&gt;
      intArray[in] = temp;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;1&lt;br /&gt;
9&lt;br /&gt;
2&lt;br /&gt;
8&lt;br /&gt;
3&lt;br /&gt;
7&lt;br /&gt;
4&lt;br /&gt;
6&lt;br /&gt;
5&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Quick sort with median-of-three partitioning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = { 1, 9, 2, 8, 3, 7, 4, 6, 5 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
    quickSort(intArray);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void quickSort(int[] intArray) {&lt;br /&gt;
    recQuickSort(intArray, 0, intArray.length - 1);&lt;br /&gt;
  }&lt;br /&gt;
  public static void recQuickSort(int[] intArray, int left, int right) {&lt;br /&gt;
    int size = right - left + 1;&lt;br /&gt;
    if (size &amp;lt;= 3)&lt;br /&gt;
      manualSort(intArray, left, right);&lt;br /&gt;
    else {&lt;br /&gt;
      double median = medianOf3(intArray, left, right);&lt;br /&gt;
      int partition = partitionIt(intArray, left, right, median);&lt;br /&gt;
      recQuickSort(intArray, left, partition - 1);&lt;br /&gt;
      recQuickSort(intArray, partition + 1, right);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static int medianOf3(int[] intArray, int left, int right) {&lt;br /&gt;
    int center = (left + right) / 2;&lt;br /&gt;
    if (intArray[left] &amp;gt; intArray[center])&lt;br /&gt;
      swap(intArray, left, center);&lt;br /&gt;
    if (intArray[left] &amp;gt; intArray[right])&lt;br /&gt;
      swap(intArray, left, right);&lt;br /&gt;
    if (intArray[center] &amp;gt; intArray[right])&lt;br /&gt;
      swap(intArray, center, right);&lt;br /&gt;
    swap(intArray, center, right - 1);&lt;br /&gt;
    return intArray[right - 1];&lt;br /&gt;
  }&lt;br /&gt;
  public static void swap(int[] intArray, int dex1, int dex2) {&lt;br /&gt;
    int temp = intArray[dex1];&lt;br /&gt;
    intArray[dex1] = intArray[dex2];&lt;br /&gt;
    intArray[dex2] = temp;&lt;br /&gt;
  }&lt;br /&gt;
  public static int partitionIt(int[] intArray, int left, int right, double pivot) {&lt;br /&gt;
    int leftPtr = left;&lt;br /&gt;
    int rightPtr = right - 1;&lt;br /&gt;
    while (true) {&lt;br /&gt;
      while (intArray[++leftPtr] &amp;lt; pivot)&lt;br /&gt;
        ;&lt;br /&gt;
      while (intArray[--rightPtr] &amp;gt; pivot)&lt;br /&gt;
        ;&lt;br /&gt;
      if (leftPtr &amp;gt;= rightPtr)&lt;br /&gt;
        break;&lt;br /&gt;
      else&lt;br /&gt;
        swap(intArray, leftPtr, rightPtr);&lt;br /&gt;
    }&lt;br /&gt;
    swap(intArray, leftPtr, right - 1);&lt;br /&gt;
    return leftPtr;&lt;br /&gt;
  }&lt;br /&gt;
  public static void manualSort(int[] intArray, int left, int right) {&lt;br /&gt;
    int size = right - left + 1;&lt;br /&gt;
    if (size &amp;lt;= 1)&lt;br /&gt;
      return;&lt;br /&gt;
    if (size == 2) {&lt;br /&gt;
      if (intArray[left] &amp;gt; intArray[right])&lt;br /&gt;
        swap(intArray, left, right);&lt;br /&gt;
      return;&lt;br /&gt;
    } else {&lt;br /&gt;
      if (intArray[left] &amp;gt; intArray[right - 1])&lt;br /&gt;
        swap(intArray, left, right - 1);&lt;br /&gt;
      if (intArray[left] &amp;gt; intArray[right])&lt;br /&gt;
        swap(intArray, left, right);&lt;br /&gt;
      if (intArray[right - 1] &amp;gt; intArray[right])&lt;br /&gt;
        swap(intArray, right - 1, right);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;1&lt;br /&gt;
9&lt;br /&gt;
2&lt;br /&gt;
8&lt;br /&gt;
3&lt;br /&gt;
7&lt;br /&gt;
4&lt;br /&gt;
6&lt;br /&gt;
5&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Selection Sort ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = new int[] { 2, 6, 3, 8, 4, 9, 1 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.print(i);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    selectionSort(intArray);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.print(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void selectionSort(int[] intArray) {&lt;br /&gt;
    for (int out = 0; out &amp;lt; intArray.length - 1; out++) {&lt;br /&gt;
      int min = out;&lt;br /&gt;
      for (int in = out + 1; in &amp;lt; intArray.length; in++)&lt;br /&gt;
        if (intArray[in] &amp;lt; intArray[min])&lt;br /&gt;
          min = in;&lt;br /&gt;
      swap(intArray, out, min);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static void swap(int[] intArray, int one, int two) {&lt;br /&gt;
    int temp = intArray[one];&lt;br /&gt;
    intArray[one] = intArray[two];&lt;br /&gt;
    intArray[two] = temp;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;2638491 &lt;br /&gt;
 1234689&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Shellsort ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    int[] intArray = { 1, 9, 2, 8, 3, 7, 4, 6, 5 };&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
    shellSort(intArray);&lt;br /&gt;
    System.out.println(&amp;quot;after: &amp;quot;);&lt;br /&gt;
    for (int i : intArray) {&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void shellSort(int[] intArray) {&lt;br /&gt;
    int inner, outer;&lt;br /&gt;
    int temp;&lt;br /&gt;
    int h = 1;&lt;br /&gt;
    while (h &amp;lt;= intArray.length / 3){&lt;br /&gt;
      h = h * 3 + 1;&lt;br /&gt;
    }&lt;br /&gt;
    while (h &amp;gt; 0) {&lt;br /&gt;
      for (outer = h; outer &amp;lt; intArray.length; outer++) {&lt;br /&gt;
        temp = intArray[outer];&lt;br /&gt;
        inner = outer;&lt;br /&gt;
        while (inner &amp;gt; h - 1 &amp;amp;&amp;amp; intArray[inner - h] &amp;gt;= temp) {&lt;br /&gt;
          intArray[inner] = intArray[inner - h];&lt;br /&gt;
          inner -= h;&lt;br /&gt;
        }&lt;br /&gt;
        intArray[inner] = temp;&lt;br /&gt;
      }&lt;br /&gt;
      h = (h - 1) / 3;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;1&lt;br /&gt;
9&lt;br /&gt;
2&lt;br /&gt;
8&lt;br /&gt;
3&lt;br /&gt;
7&lt;br /&gt;
4&lt;br /&gt;
6&lt;br /&gt;
5&lt;br /&gt;
after: &lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Sorting Objects using insertion sort ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Person {&lt;br /&gt;
  private String lastName;&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private int age;&lt;br /&gt;
  public Person(String last, String first, int a) {&lt;br /&gt;
    lastName = last;&lt;br /&gt;
    firstName = first;&lt;br /&gt;
    age = a;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Last name: &amp;quot; + lastName + &amp;quot; First name: &amp;quot; + firstName + &amp;quot; Age: &amp;quot; + age;&lt;br /&gt;
  }&lt;br /&gt;
  public String getLast() {&lt;br /&gt;
    return lastName;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Person[] persons = new Person[] { &lt;br /&gt;
        new Person(&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, 23), &lt;br /&gt;
        new Person(&amp;quot;i&amp;quot;, &amp;quot;a&amp;quot;, 25),&lt;br /&gt;
        new Person(&amp;quot;y&amp;quot;, &amp;quot;h&amp;quot;, 26), &lt;br /&gt;
        new Person(&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, 27) };&lt;br /&gt;
    System.out.println(&amp;quot;Before sorting:&amp;quot;);&lt;br /&gt;
    for (Person p : persons) {&lt;br /&gt;
      System.out.println(p);&lt;br /&gt;
    }&lt;br /&gt;
    insertionSort(persons);&lt;br /&gt;
    System.out.println(&amp;quot;After sorting:&amp;quot;);&lt;br /&gt;
    for (Person p : persons) {&lt;br /&gt;
      System.out.println(p);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void insertionSort(Person[] persons) {&lt;br /&gt;
    int in, out;&lt;br /&gt;
    for (out = 1; out &amp;lt; persons.length; out++) {&lt;br /&gt;
      Person temp = persons[out];&lt;br /&gt;
      in = out;&lt;br /&gt;
      while (in &amp;gt; 0 &amp;amp;&amp;amp; persons[in - 1].getLast().rupareTo(temp.getLast()) &amp;gt; 0) {&lt;br /&gt;
        persons[in] = persons[in - 1];&lt;br /&gt;
        --in;&lt;br /&gt;
      }&lt;br /&gt;
      persons[in] = temp;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Last name: y First name: h Age: 26&lt;br /&gt;
Last name: d First name: e Age: 27&lt;br /&gt;
After sorting:&lt;br /&gt;
Last name: a First name: b Age: 23&lt;br /&gt;
Last name: d First name: e Age: 27&lt;br /&gt;
Last name: i First name: a Age: 25&lt;br /&gt;
Last name: y First name: h Age: 26&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>