下面是代码要实现的功能:
for (j = 1; j < i; j++) 而不是<=1000
下面也是同样的
for (j = 1; j < i; j++)
#include<stdio.h>
#include<windows.h>
void swap(int array[], int low, int high)//用于交换数组中两个数值
{
int temp;//中间变量用于交换两个数值
temp = array[low];
array[low] = array[high];
array[high] = temp;
}
int partition(int array[], int low, int high)
{
int pivotkey = array[low];//设置数组第一个元素为比较元素
while (low < high)
{
while ((low<high) && (array[high] >= pivotkey))
{/*数组最后一个元素比pivotkey大,那么array[high]就应该放
在pivotkey的后面,所以high需要向前移动*/
high--;
}
//否则就交换array[low]和array[high]的数值
swap(array, low, high);
while ((low<high) && (array[low] <= pivotkey))
{
low++;
}
//否则就交换array[low]和array[high]的数值
swap(array, low, high);
}
return low;//最后返回枢轴的位置。
}
void Qsort(int array[], int low, int high)
{
if (low<high)//如果符合判断条件的话就递归
{
int key = partition(array, low, high);//用key去接收第一躺排序之后枢轴的位置】、
Qsort(array, low, key - 1);//左边子序列
Qsort(array, key + 1, high);//右边子序列
}
}
void Quicksort(int array[], int len)//快排开始
{
Qsort(array, 0, len - 1);//调用递归函数
}
void Print(int array[], int len)//用于打印整个数组
{
for ( int i = 0;i<len; i++)
{
printf("%3d",array[i]);
}
}
void main()
{
int array[] = { 13, 27, 38, 49, 49, 65, 76, 97};
Quicksort(array,8);//调用快速排序的函数对上面的数组进行快速排序
printf("快速排序的结果为:\n");
Print(array, 8);
printf("\n");
system("pause");//暂停一下
}
问题解答:
该代码中存在两处错误:
1.在printf函数中/n应为\n,为换行符的转义字符。
2.在printf函数中%d应该为%ld,因为sum的类型为long int。
改正后的代码如下:
#include <stdio.h>
int main(){
int a = 5, b = 7;
long int sum;
sum = a + b;
printf("The sum of %d and %d is %ld\n", a, b, sum);
return 0;
}