六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 18|回复: 0

sort 排序

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-1-26 12:29:42 | 显示全部楼层 |阅读模式
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[j] < arr[minIndex])                         minIndex = j;             if (minIndex != i) {                   tmp = arr[i];                   arr[i] = arr[minIndex];                   arr[minIndex] = 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[i] < pivot)                   i++;             while (arr[j] > pivot)                   j--;             if (i <= j) {                   tmp = arr[i];                   arr[i] = arr[j];                   arr[j] = 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[j] > numbers[j+1])      {        temp = numbers[j];        numbers[j] = numbers[j+1];        numbers[j+1] = temp;      }    }  }}

merge sort:
public int[] msort(int[] a) {    if (a.Length > 1) {        int min = a.Length / 2;        int max = min;        int[] b = new int[min];        int[] c = new int[max]; // dividing main array into two half arrays        for (int i = 0; i < min; i++) {            b[i] = a[i];        }        for (int i = min; i < min + max; i++) {            c[i - min] = a[i];        }        b = msort(b);        c = msort(c);        int x = 0;        int y = 0;        int z = 0;        while (b.Length != y && c.Length != z) {            if (b[y] < c[z]) {                a[x] = b[y];                //r--                x++;                y++;            } else {                a[x] = c[z];                x++;                z++;            }        }        while (b.Length != y) {            a[x] = b[y];            x++;            y++;        }        while (c.Length != z) {            a[x] = c[z];            x++;            z++;        }    }    return a;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表