数据结构:排序
1.排序
冒泡
两个两个排序
插入
前两个排序,前三个排序,前四个排序……不停插入前几个中排序
选择
如果是升序,选n个数字中最小的与第一个互换,然后在n-1中最小的于第二个互换
快速排序(最常使用)
归并排序
两个两个有序,四个四个有序,八个八个有序……
2.排序和查找的关系
排序是查找的前提
排序是重点
3.选择排序代码
void QuickSort(int * , int, int);
int FindPos(int *, int, int);
int main()
{
int i;
int a[6] = {0, 5, 4, 3, 1, 2};
QuickSort(a, 0, 5);
for (i=0; i<6; i++)
{
printf("%d ",a[i]);
}
return 0;
}
void QuickSort(int * a, int low, int high)
{
int pos;
if (low < high)
{
pos = FindPos(a, low, high);//第一次只能把序列中第一个值的最终pos确定下来
QuickSort(a, low, pos-1);
QuickSort(a, pos+1, high);
}
}
int FindPos(int * a, int low, int high)
{
int val = a[low];
while (low < high)
{
while (low < high && a[high] >= val)
{
high--;
}
a[low] = a[high]; //只有当a[high] < val则换,要把大的换到前面去
while(low < high && a[low] <= val)
{
low++;
}
a[high] = a[low]; //只有当a[low] > val则换,要把大的换到后面去
}
a[low] = val; //最终序列中第一个值的位置放入到确定的pos位置
return high; //high可以改为low
}
posted on 2019-06-05 14:01 zhaoy_shine 阅读(119) 评论(0) 编辑 收藏 举报