1 冒泡排序
int* sortArray(int* nums, int numsSize, int* returnSize){
int i,j;
for(i=0; i<numsSize; i++)
{
printf("i = %d\n",i);
for(j=0; j<numsSize-i-1; j++)
{
if(nums[j]>nums[j+1])
{
printf("j = %d,j+1 = %d\n",nums[j],nums[j+1]);
int temp = nums[j+1];
nums[j+1] = nums[j];
nums[j] = temp;
}
}
}
*returnSize = numsSize;
return nums;
}
2 选择排序
int* sortArray(int* nums, int numsSize, int* returnSize){
int i,j;
int min = 0,temp = 0;
for(i=0; i<numsSize; i++)
{
min = i;
for(j=i; j<numsSize; j++)
{
if(nums[j]<nums[min])
{
min = j;
}
}
if(min != i)
{
temp = nums[min];
nums[min] = nums[i];
nums[i] = temp;
}
}
*returnSize = numsSize;
return nums;
}
3 插入排序
int* sortArray(int* nums, int numsSize, int* returnSize){
int i,j;
int min = 0,temp = 0;
for(i=1; i<numsSize; i++)
{
j = i-1;
while(j>=0 && nums[i]<nums[j])
{
printf("i = %d,j = %d, nums[i] = %d, nums[j] = %d\n",i,j,nums[i],nums[j]);
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i--;
j--;
printf("j= %d\n",j);
for(int n = 0;n<numsSize;n++)
{
printf("%d ",nums[n]);
}
printf("\n");
}
}
*returnSize = numsSize;
return nums;
}
4 希尔排序
5 快速排序
6 计数排序
int* sortArray(int* nums, int numsSize, int* returnSize){
int *arr = malloc(sizeof(int)*numsSize);
int max = nums[0], min = nums[0];
for(int i=0;i<numsSize; i++)
{
if(nums[i]>max)
max = nums[i];
if(nums[i]<min)
min = nums[i];
}
int *times = malloc(sizeof(int)*(max-min+1));
memset(times,0,sizeof(int)*(max-min+1));
for(int i=0; i<numsSize; i++)
{
int j = (nums[i]-min);
times[j]++;
}
int t=0;
for(int i=0; i<(max-min+1); i++)
{
while(times[i]>0)
{
arr[t] = min+i;
t++;
times[i]--;
}
}
*returnSize = numsSize;
return arr;
}