冒泡(Bubble)+插入(Insertion)排序(刚学会,出来晒晒)
(插入排序)
程序代码:#include <stdio.h>
void insertion_sort(int * data, int begin, int end) {
int i, j, k, temp;
for(i = begin + 1; i <= end; i++) {
for(j = 0; j < i; j++)
if(data[j] > data[i])
break;
temp = data[i];
for(k = i; k > j; k--)
data[k] = data[k - 1];
data[j] = temp;
}
}
int main(void) {
int array[10], i;
for(i = 0; i < 10; i++)
scanf("%d", array + i);
insertion_sort(array, 0, 9);
for(i = 0; i < 10; i++)
printf("%d ", array[i]);
return 0;
}
(冒泡排序)
程序代码:#include <stdio.h>
void swap(int * p1, int * p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void bubble_sort(int * data, int begin, int end) {
int i, j, flag = 1;
for(i = begin; i < end - begin && flag; i++) {
flag = 0;
for(j = begin; j < end - begin - i; j++) {
if(data[j] > data[j + 1]) {
swap(data + j, data + j + 1);
flag = 1;
}
}
}
}
int main(void) {
int array[10], i;
for(i = 0; i < 10; i++)
scanf("%d", array + i);
bubble_sort(array, 0, 9);
for(i = 0; i < 10; i++)
printf("%d ", array[i]);
return 0;
}
这样的算法算是最好的吗?请高手指教一下,谢谢!
[ 本帖最后由 lz1091914999 于 2011-6-11 16:03 编辑 ]









