1 #include <stdio.h> 2 #define N 10 3 /* 4 数组最值和两种排序 5 */ 6 int main(void) 7 { 8 /* 9 //题目1.求一个数组中最大与最小值 10 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10}; 11 int i,j,max,min; 12 max = min = arr[0];//假设数组其中的一个元素 为最值 13 for(i = 0;i<N;i++) 14 { 15 if(max<arr[i]) 16 max = arr[i]; 17 if(min>arr[i]) 18 min = arr[i]; 19 } 20 printf("max = %d,min = %d ",max,min); 21 */ 22 /* 23 //题目2.对数组元素进行排序(选择排序) 24 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10}; 25 int i,j,temp; 26 for(i = 0;i<N-1;i++)//外层比较到第N-1个元素,所以下标终止于N-2 27 { 28 for(j = i+1;j<N;j++)//里层比较到最后一个元素,所以下标终止于N-1 29 { 30 if(arr[i]>arr[j]) 31 { 32 temp = arr[i]; 33 arr[i] = arr[j]; 34 arr[j] = temp; 35 } 36 } 37 } 38 for(i = 0;i<N;i++) 39 { 40 printf("%d ",arr[i]); 41 } 42 */ 43 /* 44 //题目3.对数组元素进行排序(选择排序)优化版本:口诀 比而不换,只换下标 45 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10}; 46 int i,j,temp,idx; 47 for(i = 0;i<N-1;i++) 48 { 49 idx = i;//假设为最小值的下标 50 for(j = i+1;j<N;j++) 51 { 52 if(arr[idx]>arr[j]) 53 { 54 idx = j; 55 } 56 } 57 if(idx != i)//如果 idx == i,说明最小的就是下标i对应的元素,进入下一轮 58 { 59 temp = arr[i]; 60 arr[i] = arr[idx]; 61 arr[idx] = temp; 62 } 63 } 64 for(i = 0;i<N;i++) 65 { 66 printf("%d ",arr[i]); 67 } 68 */ 69 /* 70 //题目4.对数组元素进行排序(冒泡排序) 71 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10}; 72 int i,j,temp; 73 74 for(i = 0;i<N-1;i++)//N个数就有N-1趟比较 75 { 76 for(j = 0;j<N-1-i;j++)//每趟里面又有N-1-i次比较 77 { 78 if(arr[j]>arr[j+1]) 79 { 80 temp = arr[j]; 81 arr[j] = arr[j+1]; 82 arr[j+1] = temp; 83 } 84 } 85 } 86 for(i = 0;i<N;i++) 87 { 88 printf("%d ",arr[i]); 89 } 90 */ 91 return 0; 92 }