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[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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值