作为一个小白(既是技术上的,也是博客上的),希望各位多多包涵,头一次在技术论坛里发博客,内心还是比较忐忑的,毕竟到处是大神,好了,还是说说排序的问题吧.
今天我说的排序很简单,冒泡排序,插入排序,选择排序.
简单说一下几个排序的思想吧;
冒泡排序:依次比较相邻的两个数, 将小数放在前面,大数放在后面;
插入排序:每次处理既是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中;
选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后, 直到全部待排序的数据元素排玩:
直接上代码吧;
冒泡排序:
int a[] = {3, 5, 1, 6, 8, 2, 4, 9, 7};
int count = sizeof(a) / sizeof(a[0]);
int flag = 0;
for (int j = 0; j < count - 1 && flag == 0; j++) {
flag = 1;
for ( int i = 0; i < count - j - 1; i++) {
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
flag = 0;
}
}
}
for (int i = 0; i < count; i++) {
printf("a[%d] : %d\n", i, a[i]);
}
int array[] = {3, 4, 5, 7, 1};
int count = sizeof(array) / sizeof(*array);
for (int i = 1; i < count; i++) {
int j = i;
int temp = array[j];
while (j > 0 && array[j - 1] > temp) {
array[j] = array[j - 1];
j--;
}
array[j] = temp;
}
for (int i = 0; i < count; i++) {
printf("a[%d] : %d\n", i, array[i]);
}
int a[] = {3, 5, 1, 6, 8, 2, 4, 9, 7};
int count = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < count - 1; i++) {
int minIndex = i;
for (int j = minIndex + 1; j < count; j++) {
if (a[minIndex] > a[j]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = a[minIndex];
a[minIndex] = a[i];
a[i] = temp;
}
}
for (int i = 0; i < count; i++) {
printf("a[%d] : %d\n", i, a[i]);
}