sort 排序
selection sort:void selectionSort(int arr[], int n) { int i, j, minIndex, tmp; for (i = 0; i < n - 1; i++) { minIndex = i; for (j = i + 1; j < n; j++) if (arr < arr) minIndex = j; if (minIndex != i) { tmp = arr; arr = arr; arr = tmp; } } }
quick sort:
ref:http://www.algolist.net/Algorithms/Sorting/Quicksort
void quickSort(int arr[], int left, int right) { int i = left, j = right; int tmp; int pivot = arr[(left + right) / 2]; /* partition */ while (i <= j) { while (arr < pivot) i++; while (arr > pivot) j--; if (i <= j) { tmp = arr; arr = arr; arr = tmp; i++; j--; } }; /* recursion */ if (left < j) quickSort(arr, left, j); if (i < right) quickSort(arr, i, right); }
bubble sort:
void bubbleSort(int numbers[], int array_size){int i, j, temp; for (i = 1; i < array_size; i++){ for (j = 0; j < array_size - i; j++) { if (numbers > numbers) { temp = numbers; numbers = numbers; numbers = temp; } }}}
merge sort:
public int[] msort(int[] a) { if (a.Length > 1) { int min = a.Length / 2; int max = min; int[] b = new int; int[] c = new int; // dividing main array into two half arrays for (int i = 0; i < min; i++) { b = a; } for (int i = min; i < min + max; i++) { c = a; } b = msort(b); c = msort(c); int x = 0; int y = 0; int z = 0; while (b.Length != y && c.Length != z) { if (b < c) { a = b; //r-- x++; y++; } else { a = c; x++; z++; } } while (b.Length != y) { a = b; x++; y++; } while (c.Length != z) { a = c; x++; z++; } } return a;}
页:
[1]