选择法排序
int main()
{
int a[100] = { 0 };
int len = 0;
int temp = 0;
int pos = 0;
int i = 0, j = 0;
printf("请输入数组的长度,并依次输入各元素:\n");
scanf("%d", &len);
for (i = 0; i < len; i++)
{
printf("a[%d]= ", i);
scanf("%d", &a[i]);
}
for (i = 0; i < len - 1; i++)
{
temp = a[i];
pos = i;
for (j = i + 1; j < len; j++)
{
if (temp < a[j])
{
temp = a[j];
pos = j;
}
if (j == (len - 1))
{
a[pos] = a[i];
a[i] = temp;
}
}
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
return 0;
}
冒泡法排序
int main()
{
int a[100] = { 0 };
int len = 0;
int temp = 0;
int i = 0, j = 0;
printf("请输入要输入数组的长度,并输入各元素:\n");
scanf("%d", &len);
for (i = 0; i < len; i++)
{
printf("a[%d]= ", i);
scanf("%d", &a[i]);
}
for (i = 0; i < len; i++)
{
for (j = len - 1; j > i; j--)
{
if (a[j] < a[j - 1])
{
temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
}
}
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
return 0;
}
交换法排序
int main()
{
int a[100] = { 0 };
int len = 0;
int temp = 0;
int i = 0, j = 0;
printf("请输入要输入数组的长度,并输入各元素:\n");
scanf("%d", &len);
for (i = 0; i < len; i++)
{
printf("a[%d]=", i);
scanf("%d", &a[i]);
}
for (i = 0; i < len; i++)
{
temp = a[i];
for (j = i + 1; j < len; j++)
{
if (a[i] < a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
}
插入法排序
int main()
{
int a[100] = { 0 };
int len = 0;
int temp = 0;
int pos = 0;
int i = 0;
printf("请输入要输入数组的长度,并输入各元素:\n");
scanf("%d", &len);
for (i = 0; i < len; i++)
{
printf("a[%d]=", i);
scanf("%d", &a[i]);
}
for (i = 1; i < len; i++)
{
temp = a[i];
pos = i - 1;
while (pos >= 0 && temp < a[pos])
{
a[pos + 1] = a[pos];
pos--;
}
a[pos + 1] = temp;
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
return 0;
}
折半法排序
void Half_order(int left, int right, int a[])
{
int i = left, j = right;
int middle = 0, temp = 0;
middle = a[(left + right) / 2];
do
{
while (a[i] < middle && i < right)
i++;
while (a[j] > middle && j > left)
j--;
if (i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
} while (i <= j);
if (left < j)
Half_order(left, j, a);
if (right > i)
Half_order(i, right, a);
}
int main()
{
int i = 0;
int a[] = { 0 };
int len = sizeof(a) / sizeof(a[0]);
printf("请输入要输入数组的长度,并输入各元素:\n");
scanf("%d", &len);
for (i = 0; i < len; i++)
{
printf("a[%d]=", i);
scanf("%d", &a[i]);
}
Half_order(0,len-1,a);
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
return 0;
}