1.选择排序(Selection sort)
选择排序是简单直观的排序算法。
基本思想:从首元素开始,首元素与它后面的所有元素进行比较,找到数列中最小的元素,与首元素值交换。然后下一个元素与它后面的元素比较,得到第二小的元素,与之交换。
void swap(int* x, int* y)
{int temp;if (*x > *y){temp = *x; *x = *y;*y = temp;}
}
void xuanzepx(int* a,int size )//选择排序
{int i = 0, j = 0;int temp;for (i = 0; i < size-1; i++)//拿一个数与它后面的数作比较{for (j = i+1; j < size; j++){if (a[i] > a[j]){swap(&a[i],&a[j]);}}}
}void main()
{int str[] = {10,9,8,7,5,6,4,1,2,3};int zf = sizeof(str) / sizeof(str[0]);//数组元素个数xuanzepx(str,zf);for (int i = 0; i < zf; i++){printf("%3d", str[i]);}
}
下标为0的元素与他后面的所有元素比较,找到数组中最小的元素值为止,下标为0的元素值与最小元素值进行交换。位置并没有交换。然后下标为1的元素与它后面的所有元素比较,找到最小的元素值为止(此时为第二小的元素值),下标为1的元素值与最小的元素值进行交换。位置并没有交换。接着下标为2为3为...
上面swap是自己写的交换值的函数,不是系统自带的。用的是指针。
指针是变量的首地址。当你把地址给指针变量后,指针就能访问并改变里面的内容。