练习了一下冒泡排序
1 //冒泡排序 2 #include <stdio.h> 3 void bubbleSort01(int *array, int length) 4 { 5 int i, j, temp; 6 for(i = length - 1; i > 0 ; i--) 7 { 8 for(j = 0; j < i; j++) 9 { 10 if(array[j] > array[j+1]) 11 { 12 temp = array[j]; 13 array[j] = array[j+1]; 14 array[j+1] = temp; 15 } 16 } 17 } 18 } 19 20 void bubbleSort02(int *array, int length) 21 { 22 int i, temp, swapped; 23 24 do 25 { 26 swapped = 0; 27 for(i = 0; i < length -1; i++) 28 { 29 if(array[i] > array[i+1]) 30 { 31 temp = array[i]; 32 array[i] = array[i+1]; 33 array[i+1] = temp; 34 swapped = 1; 35 } 36 } 37 }while(swapped); 38 } 39 40 int main(int argc, char *argv[]) 41 { 42 int i, arrayCount; 43 printf("请输入数组元素个数:"); 44 scanf("%d", &arrayCount); 45 int array[arrayCount]; 46 47 for(i = 0; i < arrayCount; i++) 48 { 49 printf(" 请输入数组元素值,array[%d] = ", i); 50 scanf("%d", &array[i]); 51 } 52 printf(" "); 53 54 bubbleSort01(array, arrayCount); 55 56 for(i = 0; i < arrayCount; i++) 57 { 58 printf("%d ", array[i]); 59 } 60 printf(" "); 61 62 return 0; 63 }
bubbleSort01是我自己写的,后来上网一看别人写的算法是bubbleSort02,发现原来多了一个标志量,这样在数组排好序的时候就无需再遍历。