//
// 都是维基百科复制来的,想要详细信息自己可以去搜索一下,那里的代码很经典的,比“谭”的好多了
//
插入排序
void insertion_sort(char array[], unsigned int first, unsigned int last)
{
int i,j;
int temp;
for (i = first+1; i<=last;i++)
{
temp = array[i];
j=i-1;
//与已排序的数逐一比较,大于temp时,该数移后
while((j>=first) && (array[j] > temp))
{
array[j+1] = array[j];
j--;
}
array[j+1] = temp; //被排序数放到正确的位置
}
}
使用标志的冒泡排序
void bubble_sort(int a[], const int size)
{
bool flag = true;
int temp = 0; /* Temporary value for swapping two elements */
for (int i = 0; i < size - 1; i ++)
{
flag = true;
for (int j = 0; j < size - i - 1; j ++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = false;
} // end if
} // end for j = ...
if (flag == true)
break;
} // end for i = ...
}
简单选择排序
// selection sort function module in C
void selectionSort(int data[], int count)
{
int i, j, min, temp;
for (i = 0; i < count - 1; i++) {
/* find the minimum */
min = i;
for (j = i+1; j < count; j++)
if (data[j] < data[min])
min = j;
/* swap data[i] and data[min] */
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
快速排序
void swap(int *a, int *b)
{
int t=*a; *a=*b; *b=t;
}
void quicksort(int arr[],int beg,int end)
{
if (end >= beg + 1)
{
int piv = arr[beg], k = beg + 1, r = end;
while (k < r)
{
if (arr[k] < piv)
k++;
else
swap(&arr[k], &arr[r--]);
}
if (arr[k] < piv){
r++;
swap(&arr[k],&arr[beg]);
quicksort(arr, beg, k);
quicksort(arr, r, end);
}else {
if (end - beg == 1)
return;
swap(&arr[--k],&arr[beg]);
quicksort(arr, beg, k);
quicksort(arr, r, end);
}
}
}
2019-07-17 22:50:50