求C语言将数组元素大小排序!!

Python023

求C语言将数组元素大小排序!!,第1张

C语言将数组元素大小排序方法:

以下使用的是冒泡排序法实线数组从小到大排序。

思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。

10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推。

以下是具体代码:

#include <stdio.h>

int main(){

int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1}

int i, j, temp, isSorted

//优化算法:最多进行 n-1 轮比较

for(i=0i<10-1i++){

isSorted = 1  //假设剩下的元素已经排序好了

for(j=0j<10-1-ij++){

if(nums[j] >nums[j+1]){

temp = nums[j]

nums[j] = nums[j+1]

nums[j+1] = temp

isSorted = 0  //一旦需要交换数组元素,就说明剩下的元素没有排序好

}

}

if(isSorted) break//如果没有发生交换,说明剩下的元素已经排序好了

}

for(i=0i<10i++){

printf("%d ", nums[i])

}

printf("\n")

return 0

}

扩展资料:

其他将数组从小到大排序的算法

以下使用的是选择排序法实现数组从小到大排序。

思想:从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置

输入的序列为10、2、3、4、5、6、9、8、7、1进行一次排序后将最小的数放在了第一位(a[0]与它后面的所有数进行比较,若a[0]比后面的数大,进行交换),以此类推。

以下是具体代码:

#include <stdio.h>

int main(void){

int a[1001]

int n,i,j,t

scanf("%d",&n)//n为要排序的数的个数

//输入需要排序的数

for(i=0i<n++i)

scanf("%d",a+i)

//接下来进行排序

for(i=0i<n-1++i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行

{

for(j=i+1j<n++j)//j从i后一个开始,a[i]与a[j]进行比较

{

if(a[i]>a[j])//a[i]为当前值,若是比后面的a[j]大,进行交换

{

t=a[i]

a[i]=a[j]

a[j]=t

}

}//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置

for(j=0j<n++j)

printf("%-5d",a[j])

printf("\n\n")

}

return 0

}

可以采用冒泡排序的方法。以下给题主一个对既定数组进行升序、降序排序的代码

#include <stdio.h>

#include <time.h>

#define elemType int /*元素类型*/

#define LEN 100 /*数组长度上限*/

#define ASC 0 /*升序*/

#define DESC 1 /*降序*/

/*冒泡排序*/

/*参数说明:*/

/*elemType arr[]:排序目标数组*/

/*int len:元素个数*/

/*int order:排序方式;升序(由小到大):ASC;降序(由大到小):DESC*/

void bubbleSort (elemType arr[], int len, int order) {

int i, j, temp

for (i = 0 i < len - 1 i++)

for (j = 0 j < len - 1 - i j++) {

if (order == ASC) { /*升序*/

if (arr[j] > arr[j+1]) {

temp = arr[j]

arr[j] = arr[j+1]

arr[j+1] = temp

}

}

else if (order == DESC) { /*降序*/

if (arr[j] < arr[j+1]) {

temp = arr[j]

arr[j] = arr[j+1]

arr[j+1] = temp

}

}

}

}

/*打印数组*/

void printArr (elemType arr[], int len) {

int i

for (i=0 i<len i++)

printf ("%d\t",arr[i])

putchar ('\n')

}

int main (void) {

elemType arr[LEN] = {3,5,1,7,2,9,6,8,10,4}

int len

len = 10

puts ("初始数组:")

printArr (arr,len)

putchar ('\n')

puts ("升序排列:")

bubbleSort (arr, len, ASC) /*升序冒泡排序*/ 

printArr (arr,len)

putchar ('\n')

puts ("降序排列:")

bubbleSort (arr, len, DESC) /*降序冒泡排序*/ 

printArr (arr,len)

putchar ('\n')

getch () /*屏幕暂留*/ 

return 0

}

运行结果