选择排序,时间复杂度 O(n^2),
下面要注意c语言传参入数组传入的是地址!,所以用sizeof求数组大小的时候,在自定义函数中求出来的sizeof(arr)就是指针的大小,为4;64位系统的话是8;
所以要在main函数中传入自定义方法给数组大小
1 #include <stdio.h>
2 #define arrSize(arr) sizeof(arr)/sizeof(arr[0])
3 void SelectSort(int arr[],int arrsize){
4 for(int i=0;i<arrsize;i++){
5 int k = i; //对比数组最小的下标,进行交换
6 for(int j=i;j<arrsize;j++){
7 if (arr[k]>arr[j]){
8 k = j;
9 }
10 }
11 if(k!=i){
12 int temp = arr[i];
13 arr[i]=arr[k];
14 arr[k]=temp;
15 }
16 }
17 }
18 int main(){
19 int arr[] = {12,312,41,35,344,12,5};
20 int arrsize = arrSize(arr); //c语言传参入数组传入的是地址!
21 SelectSort(arr,arrsize);
22 for(int i=0;i<arrsize;i++){
23 printf("%d ",arr[i]);
24 }
25 }
//插入排序,最大复杂度O(n^2)
1 #include <stdio.h>
2 #define arrSize(arr) sizeof(arr)/sizeof(arr[0])
3 void InsertSort(int arr[],int arrsize){
4 for(int i=1;i<arrsize;i++){
5 int temp = arr[i];
6 int j=i-1;
7 while(j>=0&&arr[j]>temp){
8 arr[j+1]=arr[j];
9 j--;
10 }
11 arr[j+1] = temp;
12 for(int i=0;i<arrsize;i++){
13 printf("%d ",arr[i]);
14 }
15 printf("\n");
16 }
17 }
18 int main(){
19 int arr[] = {12,312,41,35,344,12,5};
20 int arrsize = arrSize(arr); //c语言传参入数组传入的是地址!
21 InsertSort(arr,arrsize);
22 for(int i=0;i<arrsize;i++){
23 printf("%d ",arr[i]);
24 }
25 }